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

快速排序的实现(java)

2016-04-17 16:48 316 查看

java下 快速排序的实现

package quicksort;

public class myquicksort {
public static void quicksort(int[] array,int start,int end){
int q=0; //存储   切分的位置  左边的都比这个数大,右边的都比这个位置小
if(start<end){
System.out.println(" start :"+start+"end :"+end);
q=partition(array,start,end);
quicksort(array,start,q-1);
quicksort(array,q,end);
}
}

public static int partition(int[] array,int start,int end){
int index=start-1;
int x=array[end];
int j=0;
ArrayUtils.PrintArray(array);
for(j=start;j<end;j++){
if(array[j]<=x){
index++;
ArrayUtils.exchangeElements(array,j,index);
}
}
//System.out.println("index+1: "+(index+1) +"end: "+(end));
System.out.println("index:"+index);
ArrayUtils.exchangeElements(array,index+1 ,end );
return index+1;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array={5,2,4,6,1,3,22,36};
System.out.println("Before sort:");
ArrayUtils.PrintArray(array);
System.out.println("array.length-1"+(array.length));
quicksort(array,0,array.length-1);
System.out.println("after sort:");
ArrayUtils.PrintArray(array);
}

}


其中 partition这个函数实现了

以array 数组中 end 为标杆,比他小的都在他的左边,比他大得都在他的右边。

package quicksort;

public class ArrayUtils {
public static void PrintArray(int[] array){
System.out.print("{");
for(int i=0;i<array.length;i++){
System.out.print(array[i]);
if(i<array.length -1){
System.out.print(",");
}

}System.out.print("}");
}

public static void exchangeElements(int[] array,int index1,int index2){
int temp=array[index1];
array[index1]=array[index2];
array[index2]=temp;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: