冒泡排序(及改進版)


 冒泡排序

(1)基本思想

冒泡排序的基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最后將最大(小)的數據元素交換到了無序隊列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有數據元素都排好序。

算法的核心在於每次通過兩兩比較交換位置,選出剩余無序序列里最大(小)的數據元素放到隊尾。

(2)C++代碼:

#include <iostream> #include <algorithm> #include <vector>
using namespace std; // 第一種冒泡排序算法
void bubbleSort(int nums[], int length) { for (int i = 0; i < length; i++) { for (int j = 0; j < length - i - 1; j++) { if (nums[j] > nums[j + 1]) swap(nums[j], nums[j + 1]); } } } // 對冒泡排序第一次改進:flag用於標志某一趟排序過程中是否有數據交換 // 如果進行某一趟排序時沒有數據交換,則說明數據已經按要求排序好 // 可立即結束排序,避免不必要的比較過程
void bubbleSort2(int nums[], int length) { for (int i = 0; i < length; i++) { bool flag = false; for (int j = 0; j < length - i - 1; j++) { if (nums[j] > nums[j + 1]) { swap(nums[j], nums[j + 1]); flag = true; } } if (!flag) break; } } int main() { const int len = 11; int nums[len] = { 9, 6, 10, 8, 7, 4, 2, 5, 3, 1, 0 }; //bubbleSort(nums, len);
 bubbleSort2(nums, len); for (int val : nums) cout << val << " "; cout << endl; return 0; }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM