氣泡排序(c++實現)
****排序演算法是資料結構與演算法中的基礎,排序演算法常見的有氣泡排序法,插入排序法,選擇排序法,快排,堆排,歸併排序,桶排等。本篇主要使用c++實現氣泡排序,其餘排序演算法在後續的章節中一一實現。
氣泡排序的思想:對所有相鄰記錄的關鍵字值進行比效,如果是逆順(a[j]>a[j+1]),則將其交換,最終達到有序化。
下面給出氣泡排序完整演算法,採用的是函式模板實現,這樣可以根據不同的資料型別序列,自行排序。
下面展示具體**。
//氣泡排序
#include #include using namespace std;
//函式模板
templatevoid myswap(t &a, t &b) //引數變數要用引用或者指標
//氣泡排序:公升序排列
templatevoid bubble_sort(t arr, int len)
} }}//
templatevoid printarr(t arr, int len)
cout << endl;
}int main()
; int len = sizeof(arr) / sizeof(int);
//氣泡排序
bubble_sort(arr, len);
//輸出排序後的陣列元素
printarr(arr, len);
//測試字串陣列
char arr2 = "gdfeabdc";
len = strlen(arr2); //求字串長度
//氣泡排序
bubble_sort(arr2, len);
//輸出排序後的陣列元素
printarr(arr2, len);
system("pause");
return 0;
}
以上是函式模板實現氣泡排序的全過程。
當然我們也可以對冒泡演算法做進一步優化,就算當某輪沒有發生任何數值交換時,則序列已經有序,我們就可以跳出for迴圈,結束排序。
這裡只貼出氣泡排序函式部分**。
// an highlighted block
templatevoid bubble_sort(t arr, int len)
} if (flag == 1) break; // 一輪結束後,如果沒有發生資料交換,則序列已經有序,直接退出迴圈
}}
C 實現氣泡排序
include using namespace std define array size 8 the array size int main cout show the array void myshow int a,int length for unsigned int i 0 i執行結果 演算...
c 實現氣泡排序
氣泡排序 依次比較相鄰的資料,將小資料放在前,大資料放在後 即第一趟先比較第1個和第2個數,大數在後,小數在前,再比較第2個數與第3個數,大數在後,小數在前,以此類推則將最大的數 滾動 到最後乙個位置 第二趟則將次大的數滾動到倒數第二個位置.第n 1 n為無序資料的個數 趟即能完成排序。對氣泡排序演...
氣泡排序 c 實現
冒泡的演算法介紹 以公升序排列為例來說,大的數字不斷向後排,就像煮沸的水中的氣泡一直往上公升一樣。冒泡演算法它是通過不斷比較相鄰兩數的大小來將最大的數字排列到最後的。例如 4 2 3 1 4和1相比,4大就和2交換位置 變成2 4 3 1 j 4和3比較,4大就和3交換位置 變成 2 3 4 1 j...