【氣泡排序】(Bubble Sort)
a) 原理
氣泡排序是最簡單的排序演算法。它依次比較相鄰的兩個元素,如果它們的順序錯誤就把它們交換過來,它重複的查詢所要排序的數列。查詢數列的工作直到不需要再進行交換元素即停止。排序過程中越小的元素經過交換依次冒泡浮島數列的始端,由此得名冒泡。
b) 演示動態圖
c) 演算法步驟
l 比較相鄰元素。如果前者比後者大,則進行交換;
l 依次查詢數列中相鄰元素,並進行比較,因此,一輪查詢後,最大元素位於末端;
l 針對剩餘數列元素重複上述查詢比較工作;
l 重複上述步驟,直到數列排序完成。
d) 程式碼實現
#include <iostream> using namespace std; //函式宣告 void BubbleSort(int[],int);//氣泡排序 void ShowArray(int[],int);//列印 //主函式 int main() { int array_a[] = {5,6,8,2,4,62,31,58,94,50,16}; int len = sizeof(array_a)/sizeof(array_a[0]); //列印陣列 cout << "原始陣列: "; ShowArray(array_a,len); //1-氣泡排序 BubbleSort(array_a,len); //列印陣列 cout << "【冒泡】排序後陣列: "; ShowArray(array_a,len); return 0; } //函式實現之列印陣列 void ShowArray(int array_a[],int len) { for(int i=0;i<len;i++) { cout << array_a[i] << " "; } cout << endl; } //函式實現之氣泡排序:分為外層和內層; void BubbleSort(int array_a[],int len) { for (int i=0;i<len-1;i++) //外層控制比較的輪數; { for (int j=0;j<len-i-1;j++)//內層控制每輪比較的次數; { if (array_a[j]>array_a[j+1]) { int temp; temp = array_a[j]; array_a[j] = array_a[j+1]; array_a[j+1] = temp; } } } }
參考部落格:https://www.cnblogs.com/onepixel/articles/7674659.html,再次感謝!