[问题] 如何记忆quick_sort程式码

楼主: chessjim (我没有暱称)   2015-01-09 17:03:43
我想知道大家如何记住quick sort的运作流程与c程式码
quick sort的运作流程
1.从待排序的资料中取出第一笔资料当作pivot key
2.由第二笔资料开始向后找到第一笔资料键值比基准值大的资料,将此资料的位置记录为i
3.由最后一笔资料开始向前找到第一笔资料键值比基准值小的资料,将此资料的位置记录
为j
4.若i<j,则将i,j位置的资料交换
5.重复步骤2~4,直到i>j(即i,j位置已交错)为止
6.将基准键值之资料与目前位置为j的资料交换,则基准键值之资料已放置在正确位置,且
把其他所有的资料分割成小于基准键值和大于基准键值的两组子集合
7.将两个子集合分别做快排,直到每个子集合均只剩下一个元素时,完成快排
以上是快排的运作流程,我的记忆法是把步骤用1~3个字描述,如下
1.取
2.3.比,记(2)
4.换
5.复
6.分
7.子一
然后是如何记忆程式码
实际程式码如下
void quick_sort(int a[],int left,int right){
变量宣告;
if(left<right){
key=a[left];
i=left;
j=right;
while(i<j){
while(i<right && a[i]<=key)i++;
while(j>left && a[j]>=key)j++;
if(i<j){a[i]与a[j]交换}/*if*/
}/*while*/
a[left]与a[j]交换;
quick_sort(a,left,j-1);
quick_sort(a,j+1,right);
}/*if*/
}/*quick_sort*/
然后运作流程要化成程式码每个步骤又各有几个细节要注意
变成
1.取
2.3.比,记(前->后;后->前)
4.换
5.复(while框住外面)
6.分
7.子一
这样要记住一个sort程式码要注意大约15个细节
又加上其他sort程式码
整个要记忆的量就很多
不知道大家有什么撇步可以解决这样的问题吗?
谢谢
作者: LPH66 (-6.2598534e+18f)   2015-01-09 17:07:00
call qsort() in <cstdlib> ?
作者: Killercat (杀人猫™)   2015-01-09 17:48:00
为什么要记.......
作者: azureblaze (AzureBlaze)   2015-01-09 18:04:00
你的function做的事太多需要refactor取一个元素分成比他大比他小的两堆分别排序再串起来。然后请理解分堆的原理,如果需要背这个行业不太适合你
作者: descent (“雄辩是银,沉默是金”)   2015-01-09 18:14:00
我有背算法原理, 没有背程式码怎么写
作者: carylorrk (carylorrk)   2015-01-09 18:26:00
常用到的自然会记得,用不到的也不需要去记。
作者: littleshan (我要加入剑道社!)   2015-01-09 18:29:00
干嘛背这个啦(晕) 你要记的就只有一句话而已也就是azureblaze说的分两堆 → 分别排序 → 串起来
作者: kwpn (ITSST)   2015-01-09 18:34:00
c/c++ library都有提供,为什么要记? 你有写的比较好吗
作者: michael0728n (蒜˙远古)   2015-01-09 18:59:00
要面试吼XDDDD? <---上面那句推文是问句XD
作者: cjcat2266 (CJ Cat)   2015-01-10 03:01:00
背程式码不实际又不实用理解算法和理解使用的语言比较实在
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-01-10 13:33:00
因为最厉害的人用所以要背 你暗恋他是不是
作者: azureblaze (AzureBlaze)   2015-01-10 14:01:00
我以为最厉害的人都直接std::sort除非他们有什么超厉害的特殊需求
作者: kwpn (ITSST)   2015-01-10 15:50:00
你们公司最厉害的人有比写std::sort的人厉害吗?写程式最笨的就是有现成的不用,而再去写一个重复的功能
作者: Killercat (杀人猫™)   2015-01-10 20:30:00
你们家最厉害的人真是令我们惊讶....
作者: fgkor123 (n(N))   2015-01-12 07:11:00
他用到背起来,你把这些字背起来干嘛
作者: jenocool   2015-01-12 19:53:00
不是知道算法 就大概知道怎么做了吗 ..

Links booklink

Contact Us: admin [ a t ] ucptt.com