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

java经典算法之快速排序

2016-09-23 20:09 148 查看
举个例子

如无序数组[6,2,4,1,7,9,10,3,11,23,5]

先把第一项[6]取出来,

用[6]依次与其余项进行比较,

如果比[6]小就放[6]前边,2,4,1,7,3,5都比[6]小,所以全部放到[6]前边

如果比[6]大就放[6]后边,9比[6]大,放到[6]后边,//6出列后大喝一声,比我小的站前边,比我大的站后边,行动吧!霸气十足~

一趟排完后变成下边这样:

排序前 6,2,4,1,7,9,10,3,11,23,5

排序后 2,4,1,7,3,5,6,9,10,11,23

然后6前半部分和后半部分进行同样的操作(迭代进行)

排序结束

代码:

package algorithn;

import java.util.Arrays;

import java.util.Random;

public class QuickSort {

private static Random random;

public static void main(String[] args) {

int[] arrint =
{6,2,4,1,7,9,10,3,11,23,5};

int start = 0 ;

int end = arrint.length;

sort(arrint,start,end -
1);

for (int i : arrint) {

System.out.println(i);

}

}

public static void qsort(int[] a){

sort(a,0,a.length - 1);

}

public static void sort(int[] aint,int start,int
end){

if(start >=end){

return;

}

int index = 0;

swap(aint,index,end);

index = start ;

for(int i = start;i <
end;i++ ){

if(aint[i]
< aint[end]){

swap(aint,index,i);

index++;//理解index的位置

}

}

swap(aint,index,end);

sort(aint,index + 1,end);

sort(aint,start,end - 1);

}

public static void swap(int[] arr,int a,int
b){

if(a == b ){

return;

}

arr[a] ^= arr[b];

arr[b] ^= arr[a];

arr[a] ^= arr[b];

}

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