1:基本思想:
快速排序是属于交换类排序,采用不断的比较和移动来实现排序。快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。
快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
步骤为:
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
实现代码:
public class Quick
{
public static void main(String[] args)
{
int[] ins = {2,3,5,1,23,6,78,34};
int[] ins2 = sort(ins,0,ins.length-1);
for(int in: ins2){
System.out.println(in);
}
}
public static int[] sort(int[] ins ,int start,int end){
if(start>=end){
return ins;//这个返回值并没有影响,因为这个返回值没有使用到。
}
int mid = ins[start];
int low = start;
int hight = end;
while(low < hight){
while(low < hight && ins[hight]>=mid){//
hight -=1;
}
ins[low] = ins[hight];
while(low < hight && ins[low] < mid){
low +=1;
}
ins[hight] = ins[low];
}
ins[low] = mid;
sort(ins, start, low-1);
sort(ins, low+1, end);
return ins;
}
}