Java实现直接插入排序
Java实现希尔排序
java实现冒泡排序
Java实现选择排序描述
Java实现归并排序
1、算法思想
(1)从数列中挑选一个元素,成为“基准”;
(2)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准后面(相同的数可以放到任意一边)。在这个分区退出之后,该基准就属于数列的中间位置。这个称为分区操作;
(3)递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。
2、实例代码
public class QuickSort {
public static void main(String[] args) {
int[] array = {5,2,6,4,7,3,9,1};
// 快速排序nt(array[i] + "\t");
quickSort(array,0,array.length-1);
System.out.println("从小到大排序:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + "\t");
}
}
public static void quickSort(int[] array, int start, int end) {
// 卫操作
if (start >= end) {
return;
}
// 两个哨兵
int i = start;
int j = end;
// 基准数
int basis = array[start];
while (i < j) {
// 哨兵j从右往左依次递减,找到比基准数小的数
while (array[j] >= basis && i < j) {
j--;
}
// 哨兵i从左往右依次递增,找到比基准数大的数
while (array[i] <= basis && i < j) {
i++;
}
// 交换两个哨兵的值
if (i < j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
// 将基准数放到i==j的位置,即正确的位置
array[start] = array[i];
array[i] = basis;
// 递归调用左半数组
quickSort(array,start,i-1);
// 递归调用右半数组
quickSort(array,i+1,end);
}
}
- 运行结果