冒泡排序:

  冒泡排序(Bubble Sort,泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

  这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

 

  排序的过程是用 嵌套的for循环完成的。对于10个元素的数组,一共进行9轮比较(pass从1-9)。每轮进行size-pass次比较,以决出一个最大值。

  程序首先是第一轮比较(pass=1),即先比较a[0]和a[1],再比较a[1]和a[2],然后比较a[2]和a[3]........直到比较完a[8]和a[9]为止。数组有10个元素,但只是比较了9次(0-8)。因为是朝着一个方向两个两个比较的,较大的值在比较之后放在两者的后面。9次比较使10个元素都参与了比较,并在第一轮比较完之后,最大的值“下沉”在数组底部,即a[9]。

  程序之后进行第二轮比较(pass=2),比较8次.......

  程序之后进行第三次比较(pass=3),比较7次.......

  ..............

  冒泡法比较易于实现,不论情况好坏都会进行比较,运行速度较慢。

 1 #include "stdafx.h"
 2 #include <iostream>
 3 using namespace std;
 4 
 5 void bubble(int[], int);   //函数声明;其间不需要具体的变量名(写也可)
 6 
 7 int main()
 8 {
 9         //定义一个10元素的数组
10     int array[] = { 12,23,45,56,78,89,96,63,25,58 };  
11     int len = sizeof(array) / sizeof(int);      //求元素个数
12     for (int i = 0; i < len; i++)                   //按原顺序输出一遍
13         cout << array[i] << ",";              //每输出一个元素用“,” 
14         cout << endl << endl;                //输出结束,两次换行
15     bubble(array, len);                               //调用冒泡函数
16 }
17 
18 void bubble(int a[], int size)                        //冒泡排序
19 {
20     int i;                                           
21     int temp;
22        //共比较size-1轮
23     for (int pass = 1; pass < size; pass++)          
24     {
25         for (i = 0; i < size - pass; i++)         //比较一轮
26             if (a[i] > a[i + 1])                     //一次交换
27             {
28                 temp = a[i];
29                 a[i] = a[i + 1];
30                 a[i + 1] = temp;
31             }
32             for (i = 0; i < size; i++)            //比较一轮后输出
33             
34                 cout << a[i] << ",";
35                 cout << endl;
36     }
37 }

运行结果:

12,23,45,56,78,89,96,63,25,58,

12,23,45,56,78,89,63,25,58,96,
12,23,45,56,78,63,25,58,89,96,
12,23,45,56,63,25,58,78,89,96,
12,23,45,56,25,58,63,78,89,96,
12,23,45,25,56,58,63,78,89,96,
12,23,25,45,56,58,63,78,89,96,
12,23,25,45,56,58,63,78,89,96,
12,23,25,45,56,58,63,78,89,96,
12,23,25,45,56,58,63,78,89,96,

posted @ 2017-05-21 15:36  稻草人部落  阅读(164)  评论(0编辑  收藏  举报