C++算法之排序(2)——冒泡排序

上次我们讲了桶排序,讲了它的缺点:数字太大用不了。所以,这次我来介绍另一种排序方法:冒泡。

冒泡的基本思想,就是把每个数字与下一个数字对比,如果顺序不符,就交换位置。

例如我们将3 4 1 5 2五个数从大到小排序。

首先比较1位和2位,因为3<4,不符,交换。现在队列变成4 3 1 5 2。

再来比较第二位与第三位,因为3>1,符合,不变。

继续比较第三位与第四位,因为1<5,不符,交换。队列变成4 3 5 1 2。

继续比较第四位与第五位,因为1<2,不符,交换。现在队列变成4 3 5 2 1。

到这里,我们已经把最小的归位了。以此类推,就可以把所有的归位。代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a[10000];
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    //排序重要部分
    for(int i=1;i<=n-1;i++)
        for(int j=1;j<=n-i;j++)
            if(a[j]<a[j+1])swap(a[j],a[j+1]);
    for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
    return 0;//好习惯
 }

就是这样。不过,冒泡排序也有它的缺点,就是时间太长。

总结:冒泡排序可以解决桶排序的内存问题,但也会耗时间。

PS:c++排序篇未完待续!

0 0 vote
Article Rating
Subscribe
提醒
3 评论
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
23786 蘑菇蘑菇蘑菇蘑

,,,system pause不是好习惯。。。。Linux压根用不了。

Zhang, Xuheng

你居然用swap交换函数

3
0
Would love your thoughts, please comment.x
()
x