题目
简单的排序 |
难度级别:A; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B |
试题描述
|
输入n个数,将n个数按从大到小的顺序输出(n<=10000). |
输入
|
第一行输入一个数n,表示有n个数;
第二行输入n个数。 |
输出
|
输出排序后的n个数,两两之间用一个空格隔开。(最后有空格)
|
输入示例
|
5 7 9 13 5 16 |
输出示例
|
16 13 9 7 5
|
分析
不知道您是否看过我0075题的题解,如果看过了,您就会知道有系统排序,那就太简单了。
同时,排序的方法也很多,系统排序、选择排序、冒泡排序、“快速”排序、桶排序、堆排序、栈排序……
不过,这道题想让我们了解的是选择排序。大概方法就是两重循环判断当前下标的数和当前下标+1的数谁大,再根据题目要求判断是否交换。
代码
#include<bits/stdc++.h> using namespace std; int a[10005],n; int main() { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) for(int j=i+1;j<n;j++)/*确定要比较两个数的下标*/ if(a[i]<a[j])/*从大到小排序,所以让大的在前面。*/ swap(a[i],a[j]);//C+++特有交换函数。 for(int i=0;i<n;i++) printf("%d ",a[i]); return 0; }