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

Java实现之快速排序

2017-03-21 09:53 211 查看
package com.daxin;

import java.util.Arrays;

/**
*
* 快速排序
*
* @author Daxin
*
*/
public class QuickSort {

/**
*
* @param array
*            待排序数组
* @param start
*            开始位置
* @param end
*            结束位置
* @return
*/
public static int partition(int[] array, int start, int end) {
// 固定的切分方式
int key = array[start];
while (start < end) {

while (array[end] >= key && end > start) {// 从后半部分向前扫描
end--;
}

array[start] = array[end];//将后面扫描符合的结果放到前面位置上
while (array[start] <= key && end > start) {// 从前半部分向后扫描
start++;
}

array[end] = array[start];//将前面扫描符合的结果放到后面位置上

}
array[end] = key;// key存储到最终的位置
return end;
}

public static void sort(int[] array, int start, int end) {
if (start >= end) {
return;
}
int index = partition(array, start, end);
sort(array, start, index - 1);
sort(array, index + 1, end);
}

public static void main(String[] args) {
int[] arr = new int[] { 11, 6, 5, 6, 4, 9, 5, 3, 5, 9, 15 };
System.out.println(Arrays.toString(arr));

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

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