算法思想
详见此博客 点击进入
java 代码
/**
* 快速排序算法实现、
* 快速排序其实是冒泡排序的一种改进,冒泡排序每次对相邻的两个数进行比较,这显然是一种比较浪费时间的。
* 最差时间复杂度和冒泡排序是一样的都是O(n2)、它的平均时间复杂度为O(nlog2n)
* @author qiu
*
*/
public class QuickSort {
static void Quick_Sort(int[] arr,int begin,int end) {
if(begin > end)
return;
int tmp = arr[begin];
int i = begin; //设置哨兵i
int j = end; //设置哨兵j
while(i != j){
while(arr[j] >= tmp && j > i)
j--;
while(arr[i] <= tmp && j > i)
i++;
if(j > i){ //交换操作
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[begin] = arr[i];
arr[i] = tmp;
Quick_Sort(arr, begin, i-1); //递归操作、基数左边的数
Quick_Sort(arr, i+1, end); //递归操作、基数右边的数
}
public static void main(String[] args) {
int [] arr = {4,5,6,8,0,10,14,55,0};
Quick_Sort(arr,0,8);
System.out.println(Arrays.toString(arr));
}
}