全網最全C語言 C 全套學習教程

2022-08-10 00:51:16 字數 1868 閱讀 5290

# 基本思想

氣泡排序(bubble sort),是一類「交換」類排序方法,類似水中冒泡,最大的資料會沉到水底,較小的數會浮上來。很簡單,以從小到大排序為例,每一趟排序將「逆序」(前乙個元素比後乙個元素大)相鄰兩個資料元素交換,這樣就會將最大的元素交換到「最後」的位置,氣泡排序每趟子排序過程都會將當前「最大」元素交換到最後位置,較小的元素會漸漸排到前面。

氣泡排序時間複雜度是o(n^2),是穩定的排序,當初始序列為從小到大有序時,僅需要進行n-1次關鍵字比較,不需要移動任何記錄,即可完成排序過程;當初始序列從大到小逆序時,需要進行n-1趟排序,進行n(n-1)/2次比較和交換。

舉例來說:

例如:給定10個整數:(4,3,1,2,6,5,0,9,8,7) 從小到大排序。

第一趟子排序:針對整個資料記錄(4,3,1,2,6,5,0,9,8,7)

3和4 逆序,交換,得到(3,4,1,2,6,5,0,9,8,7)

1和4 逆序,交換,得到(3,1,4,2,6,5,0,9,8,7)

4和2 逆序,交換,得到(3,1,2,4,6,5,0,9,8,7)

4和6 有序,不交換,不變化(3,1,2,4,6,5,0,9,8,7)

6和5 逆序,交換,得到(3,1,2,4,5,6,0,9,8,7)

6和0 逆序,交換,得到(3,1,2,4,5,0,6,9,8,7)

6和9 有序,不交換,不變(3,1,2,4,5,0,6,9,8,7)

9和8 逆序,交換,得到(3,1,2,4,5,0,6,8,9,7)

9和7 逆序,交換,得到(3,1,2,4,5,0,6,8,7,9)

很明顯,一趟子排序後,在整個資料記錄(4,3,1,2,6,5,0,9,8,7)得到最大的資料元素9,現在的資料記錄為(3,1,2,4,5,0,6,8,7,9)。

第二趟子排序:對資料子記錄(3,1,2,4,5,0,6,8,7)進行相同的交換過程,注意9可以不參與排序了。

直到:一趟排序過程中,沒有任何交換資料元素的操作即為有序。

# **實現

/*

****************************************==

名稱 :c語言必學的12個排序演算法

功能 :氣泡排序

環境 :windows 10 + dev-c++編譯

作者 :乙隻會c的貓

時間 :2020.7.19

****************************************==

*/

#include 

void bubble_sort(int a, int length)

}}}

int main(void)

;

bubble_sort(a, 10);

int i;

for(i=0; i<10; i++)

printf("%d ", a[i]);

return 0;

}

最全C語言檔案操作談不上,C語言基礎教程之檔案操作

c語言檔案讀寫 開啟檔案 讀寫檔案 關閉檔案 開啟檔案 您可以使用 fopen 函式來建立乙個新的檔案或者開啟乙個已有的檔案,這個呼叫會初始化型別 file 的乙個物件,型別 file 包含了所有用來控制流的必要的資訊。下面是這個函式呼叫的原型 在這裡,filename 是字串,用來命名檔案,訪問模...

C語言基礎學習教程基本語法

c 的令牌 token c 程式由各種令牌組成,令牌可以是關鍵字 識別符號 常量 字串值,或者是乙個符號。例如,下面的 c 語句包括五個令牌 printf hello,world n 這五個令牌分別是 printf hello,world n 分號 在 c 程式中,分號是語句結束符。也就是說,每個語...

C語言小教程

基本格式 include include int main 輸出字母c include stdio.h int main x y z排序 include stdio.h int main if x z 交換x,z的值 if y z 交換z,y的值 printf small to big d d d ...