冒泡排序(高级版)之C++实现

一、源代码:BubbleSortHigh.cpp

 1 #include<iostream>
 2 using namespace std;
 3 
 4 /*定义输出一维数组的函数*/
 5 void print(int array[], int n)
 6 {
 7     for (int i = 0; i < n; i++)
 8     {
 9         cout << array[i] << " ";
10     }
11     cout << endl;
12 }
13 
14 /*定义冒泡排序的函数,升序排序,返回交换次数*/
15 int bubbleSort(int array[], int n)
16 {
17     //定义变量,记录交换次数
18     int count = 0;
19     //定义中间变量temp
20     int temp;
21     //遍历数组(进行排序)
22     cout << "开始对数组进行排序了..." << endl;
23     for (int i = 0; i < n; i++)
24     {
25         //定义变量是否进行交换了,默认为未交换,置为0
26         bool swap = false;
27         for (int j = 0; j < n - 1 - i; j++)
28         {
29             cout << "" << (i + 1) << "趟第" << (j + 1) << "次排序" << endl;
30             //如果左边的数大于右边的数就进行交换顺序
31             if (array[j] > array[j + 1])
32             {
33                 temp = array[j];
34                 array[j] = array[j + 1];
35                 array[j + 1] = temp;
36                 cout << array[j] << "" << array[j + 1] << "互换了" << endl;
37                 //输出此时数组的顺序
38                 cout << "数组此时的顺序是:";
39                 print(array, 10);
40                 //每交换一次,记录数加1
41                 count++;
42                 //如果交换了,将swap置为1
43                 swap = true;
44             }
45         }
46         //如果未交换,即swap=0,则进行下一趟
47         if (!swap)
48         {
49             break;
50         }
51     }
52     cout << "数组排序结束了..." << endl;
53     return count;
54 }
55 
56 int main()
57 {
58     //定义待排序的一维数组
59     int array[] = { 1, 3, 4, 5, 2, 6, 10, 9, 8, 7 };
60     //输出原始数组
61     cout << "原始数组是:" << endl;
62     print(array, 10);
63     //对数组进行排序
64     int count = bubbleSort(array, 10);
65     //输出排序后的数组
66     cout << "排序后的数组是:" << endl;
67     print(array, 10);
68     cout << "共交换" << count << "" << endl;
69 }

 

二、运行效果(与初级版运行效果比较,过程更简单)

 

 

转载于:https://www.cnblogs.com/zfc-java/p/7390685.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐