社区
数据结构与算法
帖子详情
快速排序题
hundredfeather
2009-12-05 08:49:57
各位,好!
今天作严版数据结构习题集时,有一道题:
对长度为n=7的纪录序列进行快速排序时,所需进行比较次数。
1.最好情况下需多少次比较。
2.给出一个实例。
这题的思路是什么啊?谢谢
...全文
230
4
打赏
收藏
快速排序题
各位,好! 今天作严版数据结构习题集时,有一道题: 对长度为n=7的纪录序列进行快速排序时,所需进行比较次数。 1.最好情况下需多少次比较。 2.给出一个实例。 这题的思路是什么啊?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hundredfeather
2009-12-06
打赏
举报
回复
to hairetz:
若是 1 2 3 4 5 6 7 序列:
第一趟:比较6次 第二趟:5次 第三趟 :4 。。
共比较:6+5+4+3+2+1=6*7/2=21次;无需交换。
如下序列:
4 2 1 3 6 5 7
第一趟:6次,第二趟:2次 第三趟:2次 共需 10次。
但是我不知怎么证明什么序列是比较次数最少!
猫已经找不回了
2009-12-06
打赏
举报
回复
对长度为n=7的纪录序列进行快速排序时,所需进行比较次数。
1.最好情况下需多少次比较。
2.给出一个实例。
最好的例子,就是每次,左右搜索都发现已经排好序了,就只要处理O(logN)趟,多少次没仔细算。
1,2,3,4,5,6,7
sduxiaoxiang
2009-12-06
打赏
举报
回复
最坏的例子 已经排好序的一组数
perfecttt
2009-12-05
打赏
举报
回复
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快排
[编辑本段] 算法过程
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。一趟快速排序的算法是:
1)设置两个变量I、J,排序开始的时候:I=1,J=N-1;
2)以第一个数组元素作为关键数据,赋值给X,即 X=A[0];
3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换;
4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换;
5)重复第3、4步,直到 I=J;
例如:待排序的数组A的值分别是:(初始关键数据:X=49)
A[0] 、 A[1]、 A[2]、 A[3]、 A[4]、 A[5]、 A[6]:
49 38 65 97 76 13 27
进行第一次交换后: 27 38 65 97 76 13 49
( 按照算法的第三步从后面开始找)
进行第二次交换后: 27 38 49 97 76 13 65
( 按照算法的第四步从前面开始找>X的值,65>49,两者交换,此时:I=3 )
进行第三次交换后: 27 38 13 97 76 49 65
( 按照算法的第五步将又一次执行算法的第三步从后开始找
进行第四次交换后: 27 38 13 49 76 97 65
( 按照算法的第四步从前面开始找大于X的值,97>49,两者交换,此时:J=4 )
此时再执行第三步的时候就发现I=J,从而结束一趟快速排序,那么经过一趟快速排序之后的结果是:27 38 13 49 76 97 65,即所以大于49的数全部在49的后面,所以小于49的数全部在49的前面。
快速排序就是递归调用此过程——在以49为中点分割这个数据序列,分别对前面一部分和后面一部分进行类似的快速排序,从而完成全部数据序列的快速排序,最后把此数据序列变成一个有序的序列,根据这种思想对于上述数组A的快速排序的全过程如图6所示:
初始状态 {49 38 65 97 76 13 27}
进行一次快速排序之后划分为 {27 38 13} 49 {76 97 65}
分别对前后两部分进行快速排序 {27 38 13} 经第三步和第四步交换后变成 {13 27 38} 完成排序。
{76 97 65} 经第三步和第四步交换后变成 {65 76 97} 完成排序。
微软面试100
题
系列之高清完整版PDF文档[带目录+标签]by_July
-
快速排序
的分区策略,归并排序的递归分解思想,堆排序的构建和调整过程。 2. **查找算法**:例如二分查找、哈希查找等。 - 二分查找的时间复杂度分析,哈希查找的关键在于哈希函数的设计。 3. **动态规划**:...
JAVA经典算法90
题
【含源码】
首先,"JAVA经典算法40
题
.doc"可能包含了一些基础的算法
题
目,如排序(冒泡排序、选择排序、插入排序、
快速排序
、归并排序)、搜索(线性搜索、二分搜索)、图论(最短路径问
题
、拓扑排序)以及动态规划等。...
IT面试笔试
题
集锦
在实际笔试过程中,
题
集可能会包含算法
题
,比如排序算法(
快速排序
、归并排序、堆排序等)、查找算法(二分查找、哈希查找等)以及数据结构(栈、队列、链表、树、图等)。这些算法不仅考察编码能力,还测试解决问
题
...
46家著名IT公司的笔试
题
例如,查找算法(顺序查找、二分查找)、排序算法(冒泡排序、选择排序、插入排序、
快速排序
、归并排序等)的设计与分析,以及如何根据实际问
题
选择合适的数据结构。 操作系统是计算机系统的核心,相关
题
目可能涉及...
200个经典C程序【源码】
045
快速排序
046 选择排序 047 堆排序 048 归并排序 049 基数排序 050 二叉搜索树操作 051 二项式系数递归 052 背包问
题
053 顺序表插入和删除 054 链表操作(1) 055 链表操作(2) 056 单链表就地逆置...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章