快速排序
来源:互联网 发布:淘宝海报多少钱一张 编辑:程序博客网 时间:2024/06/16 04:52
运用了分治思想,三步分治过程
分解:数组A[p...r]被划分为两个子数组A[p...q-1]和A[q+1...r],其中左边数组元素都小于A[q],右边数组都大于A[q]
解决:通过递归调用快速排序,对子数组A[p...q-1]和A[q+1...r]进行排序
合并:不需要合并操作
quicksort(A, p, r)
q = PARTITION(A, p, r)
quicksort(A, p, q-1)
quicksort(A, q+1, r)
PARTITION,即数组的划分是关键步骤
PARTITIN(A, p, r)
x = A[r]
i = p - 1
for j = p to r-1
if(A[j] <= x)
i = i + 1
exchange A[i] with A[j]
exchange A[i+1] with A[r]
return i + 1 即主元的位置
i 保留了左边数组最靠右的位置(因此遇到比主元A[r]小的,i要自加,同时将比主元A[r]小的元素值交换到该位置);j则是遍历数组的位置;
时间复杂度分析:如果每一层都出现最坏情况的划分,则时间复杂度为O(n^2);其他情况都为O(nlg n)
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Android init进程——属性服务
- 礼券收集者问题
- 堆(堆排序)
- POJ1328-Radar Installation
- hdu 1007(分治法应用)
- 快速排序
- CentOS 7安装LAMP环境
- 安卓学习笔记07——使用pull解析xml文件
- TCP 与 UDP 运用
- 基本的数据结构
- Fiddler是最强大最好用的Web调试工具之一--网站抓包分析
- 【矩阵快速幂】HDU 4549 : M斐波那契数列(矩阵嵌套)
- 计数排序
- hihocoder#1050之树中最长路