交换排序算法:快速排序-Quick Sort
来源:互联网 发布:win10设置java环境变量 编辑:程序博客网 时间:2024/06/05 16:53
基本思想
- 先从数列中取出一个数作为基准数。
- 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
- 再对左右区间重复第二步,直到各区间只有一个数。
总结:挖坑填数+分治法
//快速排序 void quick_sort(int s[], int l, int r) { if (l < r) { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 int i = l, j = r, x = s[l]; while (i < j) { while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if(i < j) s[i++] = s[j]; while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 i++; if(i < j) s[j--] = s[i]; } s[i] = x; quick_sort(s, l, i - 1); // 递归调用 quick_sort(s, i + 1, r); } }
算法分析
在最好情况下运行时间为θ(nlogn)。
在最坏情况下运行时间为θ(n2)。
快速排序的平均运行时间为θ(nlogn)。
空间复杂度
在快速排序的过程中,只用到一个x临时存放待插入元素,因此空间复杂度为O(1)。
排序稳定性
快速排序是不稳定排序。
阅读全文
0 0
- 交换排序算法:快速排序-Quick Sort
- 【排序算法】 快速排序 quick sort(交换类排序)
- 排序---交换排序---快速排序Quick Sort
- 算法---快速排序(quick sort)
- 快速排序算法-Quick Sort
- 经典排序算法 - 快速排序Quick sort
- 经典排序算法 - 快速排序Quick sort
- 经典排序算法 - 快速排序Quick sort
- 经典排序算法 - 快速排序Quick sort
- 经典排序算法 - 快速排序Quick sort
- 【算法基础】【排序】快速排序 - Quick Sort
- 经典排序算法 - 快速排序Quick sort
- 常见排序算法 - 快速排序 (Quick Sort)
- 经典排序算法 - 快速排序Quick sort
- 排序算法之快速排序(Quick sort)
- 排序算法---快速排序(Quick Sort)
- 交换排序—快速排序(Quick Sort)
- 交换排序—快速排序(Quick Sort)
- 在jenkins上配置Android项目(git管理,gradle构建)
- hive基本类型和复杂类型
- idea 热部署
- byte[]转String,编码与乱码问题,以及Base64编码
- android学习——popupWindow 在指定位置上的显示
- 交换排序算法:快速排序-Quick Sort
- Android零基础入门第35节:Android中基于回调的事件处理
- 初学JAVA04
- web后端--一个小小的下载和防盗链功能
- unix 编辑命令大全(vi/vim)
- 面试复习—网络知识点-----UDP
- 前台页面调试技巧----页面打印console
- java匿名内部类 学习笔记
- Android 7.0 ActivityManagerService(3) 启动Activity的过程:二