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

快速排序-java实现

2016-11-24 10:20 169 查看
/**

* 快速排序: 定义数组的第一个元素为基准元素,进行所有元素的比较,比较一趟的情况是比基准数小的在左边,比基准数大的在右边.重复比较

* 不稳定排序

*/

public class QuickSort {


public void quickSort(int[] array, int left, int right) {

if (left >= right)

return;


int base = array[left];// 基准数

int low = left;

int high = right;

while (low < high) {// 从两端开始遍历

// 从高位向低位遍历,发现比基准大的,高位向左移动

while (low < high && base <= array[high]) {

high--;

}

// 跳出循环,说明遇到到比基准数小的数据,则将高位元素赋值到低位

array[low] = array[high];


// 从低位向高位遍历,比基准数大的就往后遍历

while (low < high && base >= array[low]) {

low++;

}

// 跳出说明遇到比基准数大的,

array[high] = array[low];

}

array[low] = base;


quickSort(array, left, low - 1);

quickSort(array, low + 1, right);

}


public static void main(String[] args) {

int[] array = { 18, 6, 98, 5, 48, 7, 2, 0, -1, 7,32, 6, 10 };


PrintUtil.print("快速排序");

PrintUtil.printArray(array, PrintUtil.HORIZONTAL);

QuickSort quickSort = new QuickSort();

quickSort.quickSort(array, 0, array.length - 1);

PrintUtil.printArray(array, PrintUtil.HORIZONTAL);

}

}



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