改进的冒泡算法

    在百度百科中的代码:

void bubble_sort(int a[], int n)
{
    int i, j, temp;
    for (j = 0; j < n - 1; j++)
        for (i = 0; i < n - 1 - j; i++)
        {
            if(a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
}
View Code

改进后:

 1 void bubble_sort(int a[], int n)
 2 {
 3     int i, j, temp;
 4 
 5     for (i = 0; i < n; i++) {
 6         for (j = 1; j < n - i; j++) {
 7             if (a[i] > a[i + j] ) {
 8                 temp = a[i];
 9                 a[i] = a[i + j];
10                 a[i + j] = temp;
11             }
12         }
13         printf("a[%d] = %d
", i, a[i]);
14     }
15 }

前数: a[i] 

后数: a[i + j]

外循环: 前数

    从下标0开始;

内循环: 后数

    从下标1开始;

交换(数据)代码:

    (1) 把前数赋值给临时变量(temp);

    (2) 把后数赋值给前数;

    (3) 把临时变量赋值给后数

原文地址:https://www.cnblogs.com/xiaobin-hlj80/p/5394149.html