java算法之快速排序

来源:互联网 发布:bgm识别软件 编辑:程序博客网 时间:2024/05/06 02:20
public class KuaiSu {
/**
 * 思想:选择一个基准元素,通常选择第一个或者最后一个元素,假设选择是第一个元素
 * 拿第一个元素与最后一个元素进行比较,如果最后的元素的值大于当前的基准元素
 * 则不动,跟最后一个元素比完跟第二个元素比较,若小于则两者交换位置,这样一趟下来,就把数组分为左右两部分,左边
 * 小于基准元素,右边大于等于基准元素,基准元素在中间;然后进行递归即可
 */

public static void quickSort(int [] a,int low,int high){
if(low < high){
int middle = getMiddle(a,low,high);
//quickSort(a,low,middle-1);
//quickSort(a,middle+1,high);
}
}
public static int getMiddle(int [] a,int low,int high){
//数组的第一个元素作为中轴
int temp=a[low];
//将数组内的元素进行值比较,这个循环是肯定能进去的
while(low<high){
//当最后一个元素的值比第一个元素的值大时
while(low < high && a[high] >= temp){
high--;
}
//

a[low]=a[high];

//这个地方要有等于号

while(low < high && a[low] <= temp){
low++;
}
a[high]=a[low];
}

a[low] = temp; 
return low;
}
public static void main(String args[]){
int a [] = new int[]{49,38,65,97,76,12,45,23,1,0};
//传入一个数组,0表示基准元素,a.length-1表示最后一个元素
   quickSort(a, 0, a.length - 1);  
for (int i : a) {
System.out.println(i);
}
}
}