概述
1:基本思想:
快速排序是属于交换类排序,采用不断的比较和移动来实现排序。快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。
快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
步骤为:
- 从数列中挑出一个元素,称为"基准"(pivot),
- 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
- 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代(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;
}
}
最后
以上就是从容八宝粥为你收集整理的java实现快速排序(思路与实现)的全部内容,希望文章能够帮你解决java实现快速排序(思路与实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复