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

快速排序代码

2016-09-22 11:44 274 查看
算法原理见:
http://blog.csdn.net/morewindows/article/details/6684558
写的很通俗易懂了。

然后按照文章里的理论,写了一把代码。也算通俗易懂^^

package sort;

import java.util.Arrays;
import java.util.Random;

public class FastSort {

/**
*
*
* @param array source array
* @param start, start and end,def a range of array should sort
* @param end
*/
private static void sort(int[] array, int start, int end) {
int i = start;
int j = end;
/*用来比较的标准值
* 当array[i]>stand的时候,将array[i]移动到stand的后面
* 当array[j]<=stand的时候,将array[j]移动到stand的前面
*/
int stand = array[i];
int flag = 0;//0比较end,1比较start
while (i != j) {
if (flag == 0) {
if (stand < array[j]) {
j--;
} else {
array[i] = array[j];
i++;
flag = 1;
}
} else {
if (stand >= array[i]) {
i++;
} else {
array[j] = array[i];
j--;
flag = 0;
}
}
}
//停止位,将该值设置成stand
array[i] = stand;
//左边,右边分别排序
if (start < i - 1) {
//在i的左边不止一个数组
sort(array, start, i - 1);
}

if (i < end - 1) {
//在i的右边不止一个数组
sort(array, i + 1, end);
}

}

public static void sort(int[] array) {
sort(array, 0, array.length - 1);
}

public static void main(String[] args) {
int[] arr = new int[1000];
Random r = new Random();
for (int i = 0; i < 1000; i++) {
arr[i] = r.nextInt(1000);
}
sort(arr);
System.out.println(Arrays.toString(arr));
}

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