C語言之冒泡排序法

冒泡排序是常見的排序方法,算法思路是經過兩層循環逐個將最大數放到底部,直到所有排列完畢。
若是要逆序排列,在內層循環中把最小數放到底部便可。
代碼:算法

#include "stdafx.h"
#include "stdlib.h"
#include"conio.h"
#include <stdio.h>

int main(int argc, char* argv[])
{

    int i = 0;
    int j = 0;
    int temp;
    int count = 0;
    int arr[10];
    int n = sizeof(arr)/sizeof(arr[0]);

    //生成一個隨機數組
    for(i=0;i<n;i++){
        arr[i] = rand();
    }
    printf("排列前的數組:");
    for ( int i=0; i< n; i++)
    {
       printf("%d, ",arr[i]);
    }
    /**
    * 兩輪循環:
    * 內輪實現最大數放到最後; 
    * 外輪循環記錄剩餘數,讓內輪循環每次操做剩餘的未經排列的數字。
    */
    for ( i=0; i< n-1; i++)
    {
        for ( j=0; j< n-1-i; j++)  
        {

            if(arr[j]>arr[j+1])
            {
                temp    = arr[j];
                arr[j]  = arr[j+1];
                arr[j+1]= temp;
            }
            count++;
        }
    }

    printf("排列後的數組:");
    for ( int i=0; i< n; i++)
    {
       printf("%d, ",arr[i]);
    }
    printf("\n循環總輪數: %d\n",count);

    system("pause");
    return 0;
}
相關文章
相關標籤/搜索