实习之路--点滴积累二_冒泡

写了个快排之后,总得再写点啥,冒泡、插入等的排序都还没写呢,那行,继续。

冒泡排序

 原理依旧简单,没事,从简单做起。假设要将数组从小到大排序:

数组 s[] = { 10, 3, 29, 0}

(1)数组中的元素,从头开始,两两之间进行比较    // 10 和 3 比较

(2)然后将小的放前面,大的放后面          // 10 和 3 比较完后,数组 s[] = { 3, 10, 29, 0},紧接着 10 和 29 进行比较

(3)一趟遍历后就会固定一个元素的位置        //  遍历一趟后 s[] = { 3, 10, 0, 29}, 29 的位置固定了

(4)多趟遍历,最终数组就排好序了          //   s[] = { 0, 3, 10, 29}

需要注意的是:

(1)执行的趟数为 n - 1 趟

(2)对于循环的变量 j ,j < n - i - 1

 

代码如下:

 1 void Bubble_Sort(long *p, long n)
 2 {
 3     for (long i = 0; i < n - 1; i++)
 4     {
 5         for (long j = 0; j < n - i - 1; j++)
 6         {
 7             if (p[j] > p[j + 1])
 8             {
 9                 long temp = p[j];
10                 p[j] = p[j + 1];
11                 p[j + 1] = temp;
12             }
13         }
14     }
15 }

测试代码如下:

1 int main()
2 {
3     long s[] = { 10, 3, 29, 0 };
4     Bubble_Sort(s, 4);
5     for (long i = 0; i < 4; i++) cout << s[i] << ends << ends;
6     return 0;
7 }

运行结果如图:

posted @ 2015-03-26 22:10  CasparJ  阅读(181)  评论(0编辑  收藏  举报