1.基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
2.具体算法描述如下:
a.从数列中挑出一个元素,称为“基准”;
b.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。
c.递归方法把小于基准值元素的子数列和大于基准值元素的子数列进行排序。
3.动图演示:
4.代码:
public static int[] quicksort(int arr[],int start,int end) {
int pivot = arr[start];//定义一个基准
int i = start;
int j = end;
while (i<j) {
while ((i<j)&&(arr[j]>pivot)) {
j–;
}
while ((i<j)&&(arr[i]<pivot)) {
i++;
}
if ((arr[i]==arr[j])&&(i<j)) {
i++;
} else {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
if (i-1>start) arr=quicksort(arr,start,i-1);
if (j+1<end) arr=quicksort(arr,j+1,end);
return (arr);
}
public static void main(String[] args) {
int arr[] = new int[]{3,4,1,7,9,14,56,34,24,46,5,6,17,38,19,33,55,23,21};
int len = arr.length-1;
arr=quicksort(arr,0,len);
for (int i:arr) {
System.out.print(i+"\t");
}
}
java快速排序
最新推荐文章于 2023-05-15 11:17:00 发布