/**
* 获取分区下标
*
* @param source 源数组
* @param start 起始位置
* @param end 结束位置
* @return 分区下标
*/
private int partition(int[] source, int start, int end) {
int m = start;
int value = source[m];
while (start <= end) {
//判断左移还是右移
if ((start < m) && (source[start] > value) || ((start > m) && (source[start] < value))) {
swap(source, m, start);
//交换位置
int t = m;
m = start;
start = t;
}
start++;
}
return m;
}
private void swap(int[] source, int a, int b) {
int temp = source[a];
source[a] = source[b];
source[b] = temp;
}
// 排序方法
private void sort(int[] source, int start, int end) {
int m = partition(source, start, end);
if (end - start <= 1) {
return;
}
sort(source, start, m - 1);
sort(source, m + 1, end);
}
快速排序 Java 实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...