NOJ 1036 数字排序

来源:互联网 发布:苹果官网软件 编辑:程序博客网 时间:2024/06/04 20:10

2016.10.28

【题目描述】
1036.数字排序

时限:1000ms 内存限制:10000K 总时限:3000ms

描述
给你N个数字,请用冒泡法对这N个数字进行降序排序,并输出结果

输入
第一行为N,N<=20 ;
第二行为N个数字,这N个数字用一个空格隔开
所有数均可用int型表示
输出
把这些数字用降序输出,每行输出一个,最后输出一个回车

输入样例
8
23 12 36 98 54 76 21 58
输出样例
98
76
58
54
36
23
21
12

【解题思路】
插入排序的思想。假设前n个数已经有序,在n个数中找到第n+1个数的合适位置,将其插入。

【代码实现】

# include <stdio.h>int n;int a[25];void insertion_sort();int main(void){    int i;    scanf("%d", &n);    for (i = 1; i <= n; ++i)        scanf("%d", &a[i]);    insertion_sort();    for (i = 1; i <= n; ++i)        printf("%d\n", a[i]);    return 0;}void insertion_sort(){    int i, j, k, t;    for (j = 2; j <= n; ++j)    {        i = 1;        while (a[j] < a[i])//找合适位置            i++;        t = a[j];//记录a[j]的值        for (k = 0; k <= j-i-1; ++k)//数组整体向后移动            a[j-k] = a[j-k-1];        a[i] = t;//插入a[j]    }}

【心得体会】

0 0
原创粉丝点击