1.基本概念:
快速排序是比较常用的一种排序方式。其时间复杂度为:平均时间O(nlogn),最坏情况O(n^2)。 稳定性:不稳定的排序方法。
2.基本思想:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
3.代码:
public class quickOrder {
//输出
public static void print(int array[]){
for(int i=0;i<array.length;i++){
if(i!=array.length-1){
System.out.print(array[i]+",");
}else {
System.out.println(array[i]);
}
}
}
//排序
public static void order(int array[],int left,int right){
int high=right;
int low=left;
//一般将数组中的第一个元素作为key值
int key=array[low];
//排序之前判断数组中最小元素的下标的是否小于最大元素的下标,若不成立,则递归结束
if(low<high){
//每次一趟快排结束标志
while(low<high){
//从右向左寻找比目标值小的元素
while(low<high && array[high]>key){
high--;
}
array[low]=array[high];
//从左向右寻找比目标值大的元素
while(low<high && array[low]<key){
low++;
}
array[high]=array[low];
}
array[low]=key;
//一次结束后将其分为两部分,继续排序
order(array, left, low-1);//左边
order(array, low+1, right);//右边
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]=new int[]{24,15,36,45,5,89,42,31,62,51,99,1,102,85};
//初始顺序
quickOrder.print(a);
//进行排序
order(a, 0, a.length-1);
//排序后顺序
quickOrder.print(a);
}
}
4.备注:
有问题的地方还请各位多多包含,不吝赐教。