国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > 编程之美学习笔记之一摞烙饼的排序

编程之美学习笔记之一摞烙饼的排序

来源:程序员人生   发布时间:2015-07-14 14:03:32 阅读次数:3478次

编程之美书中讲的1摞烙饼的排序1题
这里没法用基本的排序方法对其排序,那末最直接的方法是找出N个数种最大者,将这通过两次翻转放置到最底部,然后处理N⑴,N⑵等,直到全部排序完,所以1共需要交换2(N⑴)次

void reverse(int cakes[], int beg, int end) { int temp; while(beg < end){ temp = cakes[beg]; cakes[beg++] = cakes[end]; cakes[end--] = temp; } } void cake_sort(int cakes[], int n) { int ith, max_idx, cur_max, idx; for(ith=n-1; ith>=1; --ith) { cur_max = cakes[0]; max_idx = 0; //目的找到目前最大的那个饼 for(idx=1; idx<=ith; ++idx) { if(cakes[idx] > cur_max){ cur_max = cakes[idx]; max_idx = idx; } } if(max_idx != ith){ reverse(cakes, 0, max_idx); reverse(cakes, 0, ith); } } }
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生