經典的冒泡排序——————黑暗總會過去,黎明終會到來!

//   原理:每次兩個數進行比較,從數組的前兩個元素開始,若是前面的數 > 後面的數,就交換
          第一輪會求出一個最大值,而且放在最後面,
        而後 依此類推,通過最多N-1輪,排序完成。數組

///////bubble_sort.c///

#include<stdio.h>
#define N 5
int main(int argc, const char *argv[])
{
    int a[N];
    int temp;//臨時的中間變量
    int i,j;
    printf("請輸入%d個數值:\n",N);
    for(i=0;i<N;i++)  
        scanf("%d",&a[i]);
    for(i=0;i<N-1;i++)//外循環控制比較輪次,n個數比較n-1輪.
    {
        for(j=0;j<N-1-i;j++)//內循環n個數兩兩比較,比較n-1-i次.
        {
            if(a[j]>a[j+1])//前一個數大於後一個數交換
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            
            }
        }
    }

/*
     //利用作差思想,不借助中間變量交換值
     a[j]=a[j]-a[j+1];//保留差值
     a[j+1]=a[j+1]+a[j];//加差值
     a[j]=a[j+1]-a[j];//減差值
     //若不懂能夠舉例a=10;b=3;交換兩個值同樣的,方法同樣。
     
    */

//遍歷數組
    for(i=0;i<N;i++)
        printf("%d--<",a[i]);
    printf("\n");
    return 0;
}
相關文章
相關標籤/搜索