本文是快速排序的java实现
package com.demo.sort;
/**
* Created by Zhang chunrong on 2016/10/3.
*/
public class QuickSort {
public static void main(String args[]) {
int arr[] = new int[]{50, 1, 23, 32, 32, 322, 2, 89, 99, 67, 56};
int arrLen = arr.length;
quickSort(arr, 0, arrLen - 1);
for (int i = 0; i < arrLen; i++) {
System.out.print(arr[i] + " ");
}
}
//快速排序
private static void quickSort(int[] arr, int i, int idx) {
/*
* 1.先从数列中选择一个数作为基准数(pivot)
* 2.把数列中大于基准数的放在右边,把数列中小于基准数的放在左边
* 3.再对左右区间进行1,2步,直到各区间只有一个数
*/
//边界条件
if (i >= idx) {
return;
}
int pivot = arr[i];
int start = i;
int end = idx;
while (i < idx) {
//先从右向左查找
while (i < idx && arr[idx] >= pivot) {
idx--;
}
//开始挖坑
arr[i] = arr[idx];
i++;
while (i < idx && arr[i] < pivot) {
i++;
}
arr[idx] = arr[i];
idx--;
}
//填上最后一个坑
arr[i] = pivot;
//对分区内容进行递归调用
quickSort(arr, start, i - 1);
quickSort(arr, i + 1, end);
}
}
1 2 32 23 32 50 89 56 67 99 322