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