0080-简单的排序

题目

简单的排序
难度级别: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;
}

猜你喜欢

转载自www.cnblogs.com/DARTH-VADER-EMPIRE/p/9879315.html
今日推荐