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);
}
}
①找一个关键值,把比它小的放在其左边,比它大的放右边
②通过刚刚的关键值已经把整个数组分层了两堆,左边的任意一个都比右边的任意一个值小,
接着重复步骤①,把两堆再分成四堆,四堆再分成八堆,直到完成排序
代码:
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);
}
}
相关文章推荐
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 快速排序实现(JAVA)
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 用JAVA实现排序算法之四:快速排序
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 递归分治法在快速排序中的应用 java以界面的方式实现
- 数据结构——快速排序原理及算法Java实现
- java实现快速排序
- java实现快速排序
- Java实现快速排序
- Java实现快速排序
- java实现快速排序
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
- Java实现快速排序
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
- java实现快速排序
- 算法导论Java实现-快速排序(第七章)
- 排序算法复习(Java实现)(三): 插入,冒泡,选择,Shell,快速排序
- 快速排序的Java实现