冒泡排序示例及简析

本文介绍冒泡排序示例及简要分析。

冒泡排序的示例代码如下:

 

#include 
#include 

int main()
{
    int num[5] = {0};
    int i, j, k, tmp;
    i = 0;
    j = 0;
    k = 0;
    tmp = 0;
    
    /* 接收用户输入的5个整型数 */
    printf("please input 5 integer numbers: \n");
    for (i = 0; i < 5; i++)
    {
        scanf("%d", &num[i]);
    }
    
    /* 使用冒泡排序法进行排序 */
    for (j = 0; j < 4; j++)  /* 共5个数,需要进行n-1,即4趟比较。在这里趟数j取值从0到3,共4趟比较。 */
    {
        /* 如果趟数x从1开始计算,那么第x趟比较,需要进行5-x次两两比较。在这里趟数j取值从0开始,故需要进行5-(j+1),即(4-j)次两两比较。这里k的取值从0到(4-j-1),故在第j趟就会进行(4-j)次两两比较。*/
        for (k = 0; k < (4 - j); k++)
        {
            if (num[k] > num[k + 1])
            {
                tmp = num[k + 1];
                num[k + 1] = num[k];
                num[k] = tmp;
            }
        }
    }
    
    /* 打印排序后的数字顺序(由小到大) */
    printf("the sorted numbers: \n");
    for (i = 0; i < 5; i++)
    {
        printf("%d ", num[i]);
    }
    
    printf("\n");
     
    system("pause");
    
    return 0;
}

上述代码运行结果如下:

 

 

please input 5 integer numbers:
22
-21
0
89
100
the sorted numbers:
-21 0 22 89 100

从上述代码及运行结果能够得出,如果有n个数要进行冒泡排序

 

a)要进行n-1趟比较——此值是根据总的待排序数进行计算的;

b)在第1趟比较中,要进行n-1次两两比较,在第x趟比较中,要进行n-x次两两比较——此值是根据当前比较的趟数(即第几趟)进行计算的。

你可能感兴趣的:(算法)