C語言 氣泡排序

2021-09-30 13:17:02 字數 2073 閱讀 7636

氣泡排序(bubble sort),是一種電腦科學領域的較簡單的排序演算法

它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。

1)        比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2)        對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3)        針對所有的元素重複以上的步驟,除了最後乙個。

4)       持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

5)     例子為從小到大排序,

6)     原始待排序陣列| 6 | 2 | 4 | 1 | 5 | 9 |

7)     第一趟排序(外迴圈)

8)     第一次兩兩比較6 > 2交換(內迴圈)

9)     交換前狀態| 6 | 2 | 4| 1 | 5 | 9 |

10)  交換後狀態| 2 | 6 | 4| 1 | 5 | 9 |

11)  第二次兩兩比較,6 > 4交換

12)  交換前狀態| 2 | 6 | 4 | 1 | 5 | 9 |

13)  交換後狀態| 2 | 4 | 6 | 1 | 5 | 9 |

14)  第三次兩兩比較,6 > 1交換

15)  交換前狀態| 2 | 4 | 6 | 1 | 5 | 9 |

16)  交換後狀態| 2 | 4 | 1 | 6 | 5 | 9 |

17)  第四次兩兩比較,6 > 5交換

18)  交換前狀態| 2 | 4 | 1 | 6 | 5 | 9 |

19)  交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

20)  第五次兩兩比較,6 < 9不交換

21)  交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |

22)  交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

23)  第二趟排序(外迴圈)

24)  第一次兩兩比較2 < 4不交換

25)  交換前狀態| 2 | 4 | 1| 5 | 6 | 9 |

26)  交換後狀態| 2 | 4 | 1| 5 | 6 | 9 |

27)  第二次兩兩比較,4 > 1交換

28)  交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 | 

交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

29)  第三次兩兩比較,4 < 5不交換

30)  交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 | 

交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

31)  第四次兩兩比較,5 < 6不交換

32)  交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |

33)  交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

34)  第三趟排序(外迴圈)

35)  第一次兩兩比較2 > 1交換

36)  交換後狀態| 2 | 1 | 4| 5 | 6 | 9 |

37)  交換後狀態| 1 | 2 | 4| 5 | 6 | 9 |

38)  第二次兩兩比較,2 < 4不交換

39)  交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 | 

交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

40)  第三次兩兩比較,4 < 5不交換

41)  交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 | 

交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

42)  第四趟排序(外迴圈)無交換

43)  第五趟排序(外迴圈)無交換

44)  排序完畢,輸出最終結果12 4 5 6 9

C語言 氣泡排序

氣泡排序 兩兩比較相鄰記錄的關鍵碼,如果反序則交換,直到沒有反序記錄為止 將整個待排序的記錄序列分成有序區和無序區,初始時有序區為空,無序區包括所有待排序的記錄 對無序區從前向後依次將相鄰記錄的關鍵碼進行比較,若反序則交換,從而使得關鍵碼小的記錄向前移,關鍵碼大的向後移 像水中的氣泡,體積大的先浮起...

氣泡排序 C語言

c語言是比較簡單基礎的排序方式,排序效率並不高,但是很穩定。通過rand隨機生產10個小於20的數來測試排序。氣泡排序 include include include void bubblesortbetter int a,int n 改進 if flag 0 break void bubbleso...

C語言 氣泡排序

直接看 吧 include void bubblesort int r,int len if exchange 如果沒有發生交換,提前終止演算法 return int main bubblesort aa,10 for int i 0 i 10 i printf d aa i printf n re...