黑马程序员技术交流社区
标题:
快速排序
[打印本页]
作者:
jlnu_wl
时间:
2015-7-1 10:47
标题:
快速排序
package da23_Thread;
public class Test001 {
public static void main(String[] args) {
int a[]=new int[]{100,40,60,87,34,11,56,0};
System.out.println("未排序之前的数据:");
print(a);
System.out.println("排序之后的数据:");
sort(a,0,a.length-1);
print(a);
}
private static void sort(int[] a, int low, int high) {
if(low>=high)
return ;//low小于high,直接返回
if((high-low)==1)//如果只有两个数字,直接比较
{
if(a[0]>a[1])
swap(a,0,1);
return ;
}
int pivot=a[low];//取第一个数作为中间数
int left=low+1;
int right=high;
while(left<right)
{
//从左边开始找
while(left<right && left<=right)
{
//如果左小于右侧者一直循环
if(a[left]>pivot)
break;
left++;//左下标右边走一点
}
//从右边开始找
while(left<=right && right>low)
{
//如果右小于左侧者一直循环
if(a[right]<=pivot)
break;
right--;
}
if(left<right)
swap(a, right, left);
}
swap(a, low, right);
sort(a,low,right);
sort(a, right+1, high);
}
private static void swap(int[] array, int i, int j) {
int temp;
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
private static void print(int[] a) {
for(int i:a)
System.out.print(i+" ");
System.out.println();
}
}
作者:
wengjialiang
时间:
2015-7-1 13:55
……………………
if(low>=high)
return ;//low小于high,直接返回
……………………
作者:
wengjialiang
时间:
2015-7-1 14:01
楼主那句怎么理解啊??
作者:
zlpiano
时间:
2015-7-1 14:33
路过学习一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2