简单冒泡排序
例子:
题:
给出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;
}
另外几种解法往后更新,欢迎更多的解法
版权声明:本文为BytePlayer原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。