您的位置:首页 > 编程语言 > Java开发

4000 快速排序 java实现

2018-03-14 22:47 204 查看
快速排序的思想:
    ①找一个关键值,把比它小的放在其左边,比它大的放右边
    ②通过刚刚的关键值已经把整个数组分层了两堆,左边的任意一个都比右边的任意一个值小,
接着重复步骤①,把两堆再分成四堆,四堆再分成八堆,直到完成排序

代码:
package 排序算法;

public class 快速排序 {

static int a[]={1,1,3,8,7,3,2,0,4,1};
//static int d=0;
public static void main(String[] args){
sort(0,a.length-1);
for(int e:a)
System.out.print(e);
}
public static void sort(int low,int high){
if(low>=high) //这个判断很重要 不然排好序后还会一直递归调用sort函数
return;
//记录当前分组的最左侧和最右侧
int left=low;
int right=high;
int key=a[low];//用于比较的关键值
int tmp;
while (low<high){
//把比关键字大的放右边
while (high>low&&a[high]>=key)
high--;
if(low<high){
tmp=a[low];
a[low]=a[high];
a[high]=tmp;
}
//把比关键字小的放左边
while (low<high&&a[low]<=key)
low++;
if(low<high){
tmp=a[low];
a[low]=a[high];
a[high]=tmp;
}
}
// System.out.print("第"+(++d)+"趟次:");
// for(int e:a)
// System.out.print(e);
// System.out.println();
//分成左右两组,继续比较
sort(left,high-1);
sort(high+1,right);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: