#include <iostream>
02 #include <algorithm>
03 using namespace std;
04
05 void bubble(int a[], int len)
06 {
07 /*
08 * 从头开始向后,一次结束后,最后的那个数就是最大的,
09 * 然后长度减一,就是减去最后那个最大的数,因为它不需要再排序了
10 * 当一次排序结束后,再从头开始,依次往后,结束后,最后一个又是最大的
11
12 5 7 4 2 6
13 5 4 7 2 6
14 5 4 2 7 6
15 5 4 2 6 7(最大) 第一轮结束
16
17 4 5 2 6
18 4 2 5 6(最大) 第二轮结束
19
20 2 4 5(最大) 第三轮结束
21
22 2 4(最大) 第思轮结束
23
24 2(最大)
25
26 */
27 cout<<"冒泡排序法:"<<endl;
28 int flag;//判断是否发生了交换 0:无交换 1:交换
29 do
30 {
31 flag = 0;//清零
32 for (int i=1; i<len; i++)
33 {
34 cout<<"第"<<i<<"次排序: "<<endl;
35 if (a[i] < a[i-1])
36 {
37 swap(a[i], a[i-1]);
38
39 for (int j=0; j<len; j++)
40 {
41 cout<<a[j]<<" ";
42 }
43 cout<<endl;
44 flag = 1;
45 }
46 }
47 --len; //每次排序后都是长度减少1,提高效率
48 } while(flag == 1);
49
50 //cout<<"第 "<<i<<" 次排序"<<endl;
51 }
52
53 void show(int a[], int len)
54 {
55
56 for (int i=0; i<len; i++)
57 {
58 cout<<a[i]<<" ";
59 }
60 cout<<endl;
61 }
62
63 int main()
64 {
65 int a[5] = {5,7,4,2,6};
66
67 cout<<"排序前:"<<endl;
68 show(a, 5);
69 bubble(a, 5);
70 cout<<"排序后:"<<endl;
71 show(a, 5);
72
73 return 0;
74 }
冒泡排序
最新推荐文章于 2025-05-19 09:28:05 发布