《算法导论》笔记 第7章 7.1快速排序的描述
2014-04-07 21:04
555 查看
【笔记】
快速排序的最坏运行时间为O(n^2),期望运行时间为O(nlogn)。int partition(int A[],int p,int r) { int x = A[r]; int i = p-1; for (int j=p;j<r;j++) { if (A[j] <= x) { i++; swap(A[i],A[j]); } } swap(A[i+1],A[r]); return i+1; } void quickSort(int A[], int p,int r) { if (p < r) { int q = partition(A,p,r); quickSort(A,p,q-1); quickSort(A,q+1,r); } }
【习题】
7.1-1 说明PARTITION过程作用于输入数组 A = <13,19,9,5,12,8,7,4,21,2,6,11> 上的过程。7.1-2 当数组 A[p..r] 中的元素均相同时,PARTITION 返回的q值是什么?修改 PARTITION,使得当数组 A[p..r] 中所有的元素值相同时,q = (p+r)/2。
是r。
if (i+1==r) return (p+r)/2;
7.1-3 简要地证明在大小为n的子数组上,PARTITION的运行时间为⊙(n)。
前n-1个元素均与r进行了一次比较,因此运行时间为⊙(1) * n = ⊙(n)
7.1-4 应如何修改QUICKSORT,才能使其按非增序进行排序?
在 PARTITION 中比p大的元素移到左边,比p小的在右边。
相关文章推荐
- 树状数组优化 之 uva299
- vmware虚拟机拿不到IP的解决方法
- 堆排序
- linux中rmdir命令使用详解(删除空目录)
- linux内核线程的创建与销毁
- ZOJ 3772 Calculate the Function(线段树 + 矩阵)
- HDU 1358字符串循环节问题 ,next数组
- 字符串相等判断
- Android中的基本控件(上)--按钮控件Button
- Jquery+Ajax+asp.net+sqlserver-编写的通用邮件管理(源码)
- HDU 1358字符串循环节问题 ,next数组
- C++string详解
- 复习Hibernate(1)
- startActivityForResult()、onActivityResult()和setResult()使用
- 第二周作业——RSA算法
- grdblend---错误
- FS_S5PC100平台上Linux Camera驱动开发详解
- HDU1518 DFS
- VC++6.0——》error LNK2001: unresolved external symbol __beginthreadex
- poj1703 Find them, Catch them