快速排序算法是利用一趟快速排序,一趟快排一般都是取第一个数作为准基数进行排序,将 一串数据分成两个部分, 第一部分都比准基数小,第二部分都比准基数大,如:(-------第一部分------准基数------ 第二部分),也就这样以准基数分成了两个部分,接下来这两个部分继续使用一趟快排(可 以用递归的方法),以此类推,最后数据显示是从小到大的排列顺序。
思路:
1.选择一个标准数,然后遍历数组,分大于标准数和小于标准数来分别处理(左边和右边)。并且把标准值复制给low
2.递归处理左边和右边。
import java.util.Arrays;
public class code1 {
public static void main(String[] args) {
int arr[]=new int[]{5,3,2,8,5,9,1,0};
quick(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
private static void quick(int[] arr,int start,int end){
if(start<end){
//1.把数组中第一个数字作为标准数数
int stard=arr[start];
//记录需要排序的下标
int low=start;
int high=end;
//循环找标准数大的数和比标准数小的
while (low<high){
//右边的数字比标准数大
while (low<high && stard<=arr[high]){
high--;
}
//右边数字小。
//右边的数字替换标准的数字。
arr[low]=arr[high];
while (low<high && arr[low] <=stard){
low++;
}
arr[high]=arr[low];
arr[low]=stard;
//处理左边的数字
quick(arr,start,low);
//处理右边的数字
quick(arr,low+1,end);
}
}
}
}
时间复杂度0(nlogn)-- 平均0(nlogn) 最差是0(n^2)不稳定算法