我是靠谱客的博主 从容八宝粥,最近开发中收集的这篇文章主要介绍java实现快速排序(思路与实现),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1:基本思想:

快速排序是属于交换类排序,采用不断的比较和移动来实现排序。快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。

快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

步骤为:

  1. 从数列中挑出一个元素,称为"基准"(pivot),
  2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
  3. 递归地(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实现快速排序(思路与实现)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部