冒泡排序(Bubble Sort)
一種計算機科學領域的較簡單的排序算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,若是順序(如從大到小、首字母從從Z到A)錯誤就把他們交換過來。走訪元素的工做是重複地進行直到沒有相鄰元素須要交換,也就是說該元素列已經排序完成。
這個算法的名字由來是由於越小的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端同樣,故名「冒泡排序」。算法
每次將相鄰的兩個數比較,將較小(或較大)的調到前面。重複這個步驟,最終將最大(或最小)的數排在最後。數組
1.比較相鄰兩個數據,若是第一個比第二個大,就交換兩個數
2.對每個相鄰的數作一樣1的工做,這樣從開始一隊到結尾一隊在最後的數就是最大的數。
3.針對全部元素上面的操做,除了最後一個。
4.重複1~3步驟,知道順序完成。code
(這裏以從小到大排序爲例)排序
# include<stdio.h> int main(void) { int i, j, t, n; int a[100]; scanf("%d",&n); getchar(); for(i=0;i<n;i++) scanf("%d",&a[i]); //遍歷數組 for(i=0;i<n-1;i++) //進行n-1趟比較 { for(j=0;j<n-1-i;j++)//每一趟進行n-1-i次比較 { if(a[j]>a[j+1]) //相鄰兩個數比較 t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } for(i=0;i<n;i++) printf("%d ",a[i]); return 0; }
冒泡排序法是穩定的,由於當兩個數相等時,兩個數不用交換,不會改變兩個數的相對位置get