您好,登錄后才能下訂單哦!
這篇文章主要講解了C++如何實現冒泡排序,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
一、思路:
冒泡排序算法原理:
1.比較相鄰的元素。如果第一個數比第二個數大,就交換他們兩個。
2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
3.針對所有的元素重復以上的步驟,除了最后一個。(因為最后一個已經排好,是最大的數)
4.持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。(接著排第二大的數,一直下去)
如:使用冒泡排序:25 16 9 90 23
第一輪:如果某個數大于后面的數,那么就交換;
第一次 16 25 9 90 23
第二次 16 9 25 90 23
…..
最終: 16 9 25 23 90 最大的數就冒到了最后。
比較次數:4次
第二輪:得到第二大的數:9 16 23 25 90
到此,已經排好序,可以提前結束排序。
二、實現代碼:
#include <iostream> using namespace std; const int maxSize = 20; // 冒泡排序:從小到大排序 template <class T> void BubbleSort(T arr[], int n) { int i, j, flag; T temp; for(i = 0; i < n-1; i++) { // 進行n-1次 flag = 0; // 交換標志,0表示無交換,1表示有交換 for(j = 0; j < (n-i-1); j++) { // 數組下標最大為n-1 if(arr[j] > arr[j+1]) { // 逆序就交換 flag = 1; // 有交換 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } if(flag == 0) // 無交換,說明已經全部排好序,提前結束 break; } // for } // BubbleSort int main(int argc, const char * argv[]) { int i, n, arr[maxSize]; cout << "請輸入要排序的數的個數:"; cin >> n; cout << "請輸入要排序的數:"; for(i = 0; i < n; i++) cin >> arr[i]; cout << "排序前:" << endl; for(i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; BubbleSort(arr, n); cout << "排序后:" << endl; for(i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; return 0; }
測試結果:
看完上述內容,是不是對C++如何實現冒泡排序有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。