這篇文章主要為大家展示了C++如何實現快速排序算法,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

一、基本思想是:
通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
二、方法1實現程序:左右兩個方向掃描
// 快速排序:選第一個對象作為基準,按照該對象的排序碼大小,將整個對象
// 序列劃分為左右兩個字序列:
// 左側子序列中所有對象的排序碼都小于或等于基準對象的排序碼;
// 右側子序列中所有對象的排序碼都大于基準對象的排序碼;
// 基準對象則排在這兩個子序列中間,這也是該對象最終應放的位置
// 然后分別對這兩個子序列重復施行上述方法,直到所有的對象都排在相應位置上為止
#include <iostream>
// 一次快速排序算法
int quickPass(int arr[], int low, int high) {
int down, up, temp;
down = low;
up = high;
temp = arr[low];
while(down < up) {
while((down < up) && arr[up] >= temp) // 從右向左掃描
up--;
if(down < up)
arr[down++] = arr[up]; // 在被騰空出來的單元(由down指向)中填入arr[up]
while((down < up) && arr[down] < temp) // 從左向右掃描
down++;
if(down < up)
arr[up--] = arr[down]; // 在被騰空出來的單元(由up指向)中填入arr[down]
}
arr[down] = temp; // 最后把基準插回到數組中間去
return down;
}
// 快速排序算法
void quickSort(int arr[], int low, int high) {
// 對序列arr[low]到arr[high]作快速排序
int mid;
if(low < high) {
mid = quickPass(arr, low, high); // 對序列arr[low]到arr[high]作一趟快速排序
quickSort(arr, low, mid-1); // 對左半部分作遞歸處理
quickSort(arr, mid+1, high); // 對右半部分作遞歸處理
}
}
int main(int argc, const char * argv[]) {
// insert code here...
int len, i;
int arr[] = {40, 30, 60, 90, 70, 10, 20, 40};
len = sizeof(arr) / sizeof(arr[0]);
std::cout << "排序前:\n";
for(i = 0; i < len; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
quickSort(arr, 0, len-1); // 調用快速排序法
std::cout << "排序后:\n";
for(i = 0; i < len; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
return 0;
}另外有需要云服務器可以了解下創新互聯建站www.yijiale78.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁標題:C++如何實現快速排序算法-創新互聯
網頁網址:http://www.yijiale78.com/article18/cdpsgp.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、網站排名、靜態網站、App開發、做網站、品牌網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯