简单冒泡排序
例子:
题:
给出n个整数,请从大到小的顺序输出其中前m个数。
输入:
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,都处于区间[-500000,500000]的整数。
输出:
每组数从大到小排序输出前m个数。
答案(正在学习中,分享例子答案,若有错误请指正)
1.冒泡排序:将数一个一个交换到指定位置,一次完成一个数,交换是和邻居交换。假设从大至小排序,从第一个数开始大一点的往前交换,最先到达指定位置的是最大的数
//冒泡排序
#include<bits/stdc++.h>
using namespace std;
int a[1000001];//用来存储数据,占用32bits
#include define swap(a,b){int temp = a,a = b,b = temp;}//交换操作
int n,m;
void bubble_sort(){//定义排序函数
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]);
}
int main(){
while(~scanf("%d%d,&n,&m")){//?
for(int i = 1;i<=m;i++ ) scanf("%d",&a[i]);//?
bubble_sort():
for(int i = n;i > = n-m+1;i--) {
if(i == n-m+1) printf("%d\n",a[i]) ;//?
else printf("%d",a[i])//?
}
}
return 0;
}
另外几种解法往后更新,欢迎更多的解法
本文介绍了冒泡排序的基本原理,并给出了一个具体的排序问题实例。通过冒泡排序算法,可以将给定的一组整数从大到小进行排序,解决找到前m个最大数的问题。文章还提及后续会更新其他解法。
501

被折叠的 条评论
为什么被折叠?



