【排序】快速排序
来源:互联网 发布:sql server 数据同步 编辑:程序博客网 时间:2024/06/16 04:20
/** * 快速排序 * @param a * @param low * @param high */public static void quickSort(int[] a, int low, int high) {int l = low;int h = high;if (l >= h) {return;}int temp = a[l];// 此循环完成了一趟排序,将数组中小于temp的数放在左边,大于temp的元素放在右边while (l < h) {while (h > l && a[h] > temp) { // 从右往左扫描找到第一个小于temp的元素h--;}if(l<h){a[l] = a[h]; // 放在temp左边l++; // i指针右移一位}while (l<h&& a[l] < temp) { // 从左往右扫描找到第一个大于temp的元素l++;}if(l<h){a[h] = a[l]; // 放在temp右边h--; // h左移一位}}// end 一趟排序a[l] = temp; // 将temp放在最终位置quickSort(a, low, l-1); // 递归对temp左边元素进行排序quickSort(a, l+1, high); // 递归对temp右边的元素进行排序}public static void main(String[] args) {int[] a = { 5, 4, 3, 2, 1 };quickSort(a, 0, a.length-1);for (int num : a) {System.out.print(num + " ");}}
时间复杂度:最好O(nlogn) 最差O(n*n) 平均O(nlogn)
空间复杂度:O(nlogn) 因为需要栈空间辅助
是否稳定:不稳定
0 0
- 排序之快速排序
- 排序算法--快速排序
- 插入排序,快速排序
- 快速排序 冒泡排序
- 排序算法--快速排序
- 排序之 快速排序
- 排序之快速排序
- 快速排序、冒泡排序
- 排序---快速排序
- 排序4快速排序
- 【排序】快速排序
- 排序算法---快速排序
- 快速排序,选择排序
- 排序算法-快速排序
- 【排序】快速排序
- 【基础排序】快速排序
- 排序之------快速排序
- 排序–快速排序
- UIScrollViewDelegate 代理方法和表格的Delegate 方法冲突
- angularjs的使用:路由(4)
- C语言的良好编程习惯
- OC-KVC/KVO
- 安卓杂记1
- 【排序】快速排序
- firstTime
- 泛型算法实例分析
- DAY6
- html选择框多级联动
- 【zzuliOJ】1918 - 寻宝(二分图)
- UVALive 7462 Social Network
- 图解 navicat for oracle 的使用
- Android对话框大全