考研编程练习----快速排序
生活随笔
收集整理的這篇文章主要介紹了
考研编程练习----快速排序
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
void?sort(int?*a,?int?left,?int?right) { ????if(left?>=?right)/*如果左邊索引大于或者等于右邊的索引就代表已經(jīng)整理完成一個(gè)組了*/ ????{ ????????return?; ????} ????int?i?=?left; ????int?j?=?right; ????int?key?=?a[left]; ????? ????while(i?<?j)???????????????????????????????/*控制在當(dāng)組內(nèi)尋找一遍*/ ????{ ????????while(i?<?j?&&?key?<=?a[j]) ????????/*而尋找結(jié)束的條件就是,1,找到一個(gè)小于或者大于key的數(shù)(大于或小于取決于你想升 ????????序還是降序)2,沒有符合條件1的,并且i與j的大小沒有反轉(zhuǎn)*/? ????????{ ????????????j--;/*向前尋找*/ ????????} ????????? ????????a[i]?=?a[j]; ????????/*找到一個(gè)這樣的數(shù)后就把它賦給前面的被拿走的i的值(如果第一次循環(huán)且key是 ????????a[left],那么就是給key)*/ ????????? ????????while(i?<?j?&&?key?>=?a[i]) ????????/*這是i在當(dāng)組內(nèi)向前尋找,同上,不過注意與key的大小關(guān)系停止循環(huán)和上面相反, ????????因?yàn)榕判蛩枷胧前褦?shù)往兩邊扔,所以左右兩邊的數(shù)大小與key的關(guān)系相反*/ ????????{ ????????????i++; ????????} ????????? ????????a[j]?=?a[i]; ????} ????? ????a[i]?=?key;/*當(dāng)在當(dāng)組內(nèi)找完一遍以后就把中間數(shù)key回歸*/ ????sort(a,?left,?i?-?1);/*最后用同樣的方式對(duì)分出來的左邊的小組進(jìn)行同上的做法*/ ????sort(a,?i?+?1,?right);/*用同樣的方式對(duì)分出來的右邊的小組進(jìn)行同上的做法*/ ???????????????????????/*當(dāng)然最后可能會(huì)出現(xiàn)很多分左右,直到每一組的i?=?j?為止*/ }
轉(zhuǎn)載于:https://www.cnblogs.com/Alex0111/p/4624298.html
總結(jié)
以上是生活随笔為你收集整理的考研编程练习----快速排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Caused by: java.lang
- 下一篇: 完美数列【置顶】