tnjk.net
相关文档
当前位置:首页 >> 快速排序 >>

快速排序

快速排序简单的说就是选择一个基准,将比起大的数放在一边,小的数放到另一边。对这个数的两边再递归上述方法。 如本题 66 13 51 76 81 26 57 69 23,以66为基准,升序排序的话,比66小的放左边,比66大的放右边, 类似这种情况 13 。。。 66。...

以第一个数为基准 key = 66 ,从小到大排序,第一轮结果是将比66的结果小的数据放到66的左边,比66大的数据放到66的右边。为了好说明位置变化,将每个数设置一个位置,从0开始 0 1 2 3 4 5 6 66、13、21、54、71、89、23 首先从右边位置i = 6开始...

基本思想是:在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入最终位置后,整个数据区间被此记录分割成两子区间。所有关键字比该记录关键字小的放置在前子区间中,所有比它大的放置在后子区间中,并把该记录排在这两个子区间...

快速排序 和桶排序 的区别: 虽然表面上看起来两者很像,桶排序是把数据分到若干个桶里,再递归地对每一个桶进行排序;上述方法一是把(除了arr[piv]以外的)数据分到前后两个“桶”里,再递归地分别进行排序。但是桶排序在把数据分桶的时候,并不...

因为快速排序是根据你选定的记录(一般是选第一个)的值,将大于该记录值的元素放在右边,小于该记录值的元素放在左边,然后左右分别递归进行。如果是正序或反序的话,左右两部分的元素数量为1、n-2或n-2、1,每次递归进行后,都是只减少一个元...

最好的情况是每次都能均匀的划分序列. 例如 4,1,3,2,6,5,7,每次使用序列的第一个元素做枢轴.比较总次数为10次,交换3次,具体如下: 第一次枢轴为4,序列划分为{2,1,3},4,{6,5,7} 比较6次(4与每个元素比较一次),交换1次(4与2交换) 第二次的两个...

你可以看看这个例子: #include #include int list[5] = {7,5,9,2,6}; int sort_function( const void *a, const void *b); int main(void) { int x; qsort((void *)list, 5, sizeof(int), sort_function); for (x = 0; x < 5; x++) printf("%d\...

@piraterabbit: 学习了,当年白学了这本书,这个概念一点印象都没了,我特地查了下资料,快速排序是不稳定的: 快速排序有两个方向,左边的i下标一直往右走,当a[i]

其实这两个结果都不妨碍最终结果 因为 6把小于6和大于6的数分开了 已经达到了目的 而且我在算法导论里看到的快速排序里的划分和你说的划分算法是不同的 就是说目的一样 不会影响算法

你看百度百科吧,讲得非常详细: http://baike.baidu.com/view/19016.htm

网站首页 | 网站地图
All rights reserved Powered by www.tnjk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com