冒泡排序算法的温习

自从大一第一次接触冒泡算法后,就一直没对这个问题搞懂。虽然考试考了很多次,但一直没有时间去一点点弄懂,每次考试,就背背代码。

趁着这次复习,终于可以一步一步的理解冒泡算法了。

 1 #include "stdio.h"
 2 
 3 void print(int r[], int n)
 4 {
 5     int i;
 6     for(i = 0; i < n; i++)
 7         printf("%d ", r[i]);
 8     puts("
");
 9 }
10 
11 void BuffleSort_up(int r[], int n)
12 {
13     int i, j, temp;
14     for(i = 0; i < n; i++)
15     {
16         for(j = i+1; j < n; j++)
17         {
18             if(r[i] > r[j])
19             {
20                 temp = r[i];
21                 r[i] = r[j];
22                 r[j] = temp;
23             }
24         }
25     }
26 }
27 
28 void BuffleSort(int r[], int n)
29 {
30     int i, j, temp;
31     for(i = 0; i < n; i++)
32     {
33         for(j = 0; j < n-i; j++)
34         {
35             if(r[j] > r[j+1])
36             {
37                 temp = r[j];
38                 r[j] = r[j+1];
39                 r[j+1] = temp;
40             }
41         }
42     }
43 }
44 
45 int main()
46 {
47     int a[10] = {3, 1, 5, 2, 7, 8, 9, 4, 6, 0};
48     printf("before sort:
");
49     print(a, 10);
50     BuffleSort(a, 10);
51     printf("sort after:
");
52     print(a, 10);
53     return 0;
54 }

冒泡算法的第一层遍历是 n次遍历

第二层遍历是从i 到 n-1 的遍历

这样的导致的遍历结果就是每次遍历就会把 最大的数 交换至最后一位。

不错在此之前,我自己按照自己的理解写了个冒泡算法。

第一层是从 0 到 n-1 的遍历

第二层是 从 i+1 到 n-1 的遍历

这样的遍历 结果是,每一此遍历把最小的数交换至最前面。

原文地址:https://www.cnblogs.com/hello-lijj/p/7246686.html