冒泡排序是常见的排序方法,算法思路是通过两层循环逐个将最大数放到底部,直到全部排列完毕。
如果要逆序排列,在内层循环中把最小数放到底部即可。
代码:

#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;
}