冒泡排序

思路:

  从第一个数开始,依次与下一个数比较,若下一个数比它小,则发生交换。这样每一次遍历都将其中最大的数冒泡到顶端,直到所有数冒泡完成则排序完成。

时间复杂度:

  最好情况一次排序就完成,O(n)复杂度;最坏情况逆序,O(n2)复杂度。平均时间复杂度为O(n2)。

代码:

 1 #include<iostream>
 2 using namespace std;
 3 void bubble_sort(int arr[], int len)
 4 {
 5     for(int i = 0; i < len - 1; i++)
 6     {
 7         int flag=1;
 8         for(int j = 0; j < len - 1 - i; j++)    //0到len-1-i即为需排序的数字下标范围
 9         {
10             if(arr[j] > arr[j + 1])
11             {
12                 int temp = arr[j];
13                 arr[j] = arr[j + 1];
14                 arr[j + 1] = temp;
15                 flag=0;    //发生了交换
16             }
17         }
18         if(flag)
19         {
20             break;    //没发生交换说明排序已经完成了,可以提前退出,小优化
21         }
22     }
23 }
24 int main()
25 {
26     int arr[20];
27     int len;
28     while(cin >> len)
29     {
30         for(int i = 0; i < len; i++)
31         {
32             cin >> arr[i];
33         }
34         bubble_sort(arr, len);
35         for(int i = 0; i < len - 1; i++)
36         {
37             cout << arr[i] << ' ';
38         }
39         cout << arr[len - 1] << endl;
40     }
41     return 0;
42 }

转载于:https://www.cnblogs.com/friend-A/p/9792672.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值