冒泡排序法(C語言)

冒泡排序(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

相關文章
相關標籤/搜索