- package com.itheima;
- /**
- * 第3题: 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。
- *
- * 目前了解的排序方法有冒泡排序、选择排序、插入排序和快速排序
- *
- * @author hp-pc
- * */
- public class Test3
- {
- public static void main(String[] args)
- {
- // 定义一个int数组并且初始化
- int[] arr =
- { 23, 45, 12, 9, 78, 26 };
- System.out.println("冒泡排序:");
- bubbleSort(arr);
- print(arr);
- System.out.println("\n---------------------");
- System.out.println("选择排序:");
- selectSort(arr);
- print(arr);
- System.out.println("\n---------------------");
- System.out.println("插入排序");
- insertSort(arr);
- print(arr);
- System.out.println("\n---------------------");
- System.out.println("快速排序");
- quickSort(arr, 0, arr.length - 1);
- print(arr);
- }
- // 冒泡排序
- public static void bubbleSort(int[] arr)
- {
- for (int i = 0; i < arr.length - 1; i++)
- {
- for (int j = 0; j < arr.length - i - 1; j++)
- {
- if (arr[j] > arr[j + 1])
- swap(arr, j, j + 1);
- }
- }
- }
- // 选择排序
- public static void selectSort(int[] arr)
- {
- for (int i = 0; i < arr.length - 1; i++)
- {
- for (int j = i + 1; j < arr.length; j++)
- {
- if (arr[i] > arr[j])
- swap(arr, i, j);
- }
- }
- }
-
- // 插入排序
- public static void insertSort(int[] a)
- {
- for (int i = 1; i < a.length; i++)
- {
- int temp = a[i];// 待插入的值
- int index = i;// 待插入的位置
- while (index > 0 && a[index - 1] > temp)
- {
- a[index] = a[index - 1];// 把更大的值赋给待插入的位置,待插入的位置是移动的
- index--;// 待插入位置前移
- }
- a[index] = temp;
- }
- }
- // 快速排序
- public static int partition(int a[], int low, int height)
- {
- int key = a[low];
- while (low < height)
- {
- while (low < height && a[height] >= key)
- height--;
- a[low] = a[height];
- while (low < height && a[low] <= key)
- low++;
- a[height] = a[low];
- }
- a[low] = key;
- return low;
- }
- public static void quickSort(int a[], int low, int height)
- {
- if (low < height)
- {
- int result = partition(a, low, height);
- quickSort(a, low, result - 1);
- quickSort(a, result + 1, height);
- }
- }
- // 定义一个交换变量值的函数
- public static void swap(int[] arr, int x, int y)
- {
- int temp = arr[x];
- arr[x] = arr[y];
- arr[y] = temp;
- }
-
- // 打印函数
- public static void print(int[] arr)
- {
- System.out.print("{");
- for (int i = 0; i < arr.length; i++)
- {
- if (i == arr.length - 1)
- System.out.print(arr[i] + "}");
- else
- System.out.print(arr[i] + ",");
- }
- }
- }
复制代码
|
|