C/C++完成疾速排序的辦法。本站提示廣大學習愛好者:(C/C++完成疾速排序的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C/C++完成疾速排序的辦法正文
疾速排序不會直接獲得終究成果,只會把比k年夜和比k小的數分到k的雙方。(你可以想象一下i和j是兩個機械人,數據就是年夜小紛歧的石頭,先取走i後面的石頭留出盤旋的空間,然後他們輪番分離遴選比k年夜和比k小的石頭扔給對面,最初在他們中央把取走的那塊石頭放歸去,因而比這塊石頭年夜的全扔給了j那一邊,小的全扔給了i那一邊。只是此次命運運限好,扔完一次恰好排整潔。)為了獲得最初成果,須要再次對下標2雙方的數組分離履行此步調,然後再分化數組,直到數組不克不及再分化為止(只要一個數據),能力獲得准確成果。 —— 取自百度百科(鏈接)
C/C++ 完成:
void quick_sort(int* a, int low, int high){ if (low >= high) {
return;
} int first = low; int last = high; int key = a[first]; while (first < last) {
while (first < last && a[last] >= key) {
--last;
}
a[first] = a[last];
while (first < last && a[first] <= key) {
++first;
}
a[last] = a[first];
}
a[first] = key;
quick_sort(a, low, first-1);
quick_sort(a, first+1, high);
}