快速排序
平均时间复杂度是O(N*lgN)
,最坏情况下是O(N^2)
,是一个不稳定的算法
package com.zychen.wordCount;
/**
* @Author: 章源辰
* @Date: 2017/11/17
* @Description:
*/
public class QuickSort {
public static void main(String[] args) {
int[] array = {10, 50, 30, 20, 40};
array = sort(array, 0, array.length - 1);
for (int i : array) {
System.out.print(i + ",");
}
}
public static int[] sort(int[] arr, int l, int r) {
if (l < r) {
int i = l;
int j = r;
int x = arr[i];
while (i < j) {
while (i < j && x < arr[j]) {
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && x > arr[i]) {
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = x;
sort(arr, l, i - 1);
sort(arr, i + 1, r);
}
return arr;
}
}