快速排序平均速度是最快的一直排序,时间复杂度为O(nlog(n)),但是最坏情况下为n的平方。
/**
* @author Administrator 快速排序
*/
public class QuickSort {
static int[] datas = new int[] { 45, 651, 54, 8, 98, 45, 6, 48, 456, 1, 5615, 6 };
public static void main(String args[]) {
int left = 0;
int right = datas.length - 1;
QuickSort1(datas, left, right);
for (int data : datas) {
System.out.println(data);
}
}
public static void QuickSort1(int[] datas, int left, int right) {
// 1、递归边界
if (left > right) {
return;
}
// 2、重复逻辑
int temp = datas[left];//哨兵
int tleft = left;
int tright = right;
while (left < right) {
while (datas[right] >= temp && left < right) {
right--;
}
datas[left] = datas[right];
while (datas[left] <= temp && left < right) {
left++;
}
datas[right] = datas[left];
}
datas[left] = temp;
// 3、递归
QuickSort1(datas, tleft, left - 1);
QuickSort1(datas, left + 1, tright);
}
}