HDU 2019 - 数列有序 ( 插入排序 )

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2019


本题目其实就是让你实现一次插入排序。
插入排序的工作机理与很多人打牌时,整理手中牌时的做法差不多。在开始摸牌时,我们的左手是空的,牌面朝下放在桌上。
接这,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的每一张牌从右到左地进行比较。
无论在什么时候,左手中的牌都是排好序的,而这些牌原先都是桌上那副牌里最顶上的有一些牌。

下面是插入排序的伪代码:

INSERTION-SORT(A)</span>
1 &nbsp;for j←2 to length[A]</span>
2      do key←A[j]</span>
3         /*Insert A[j]into the sorted sequence A[1..j-1].*/</span>
4         i←j - 1</span>
5         while i&gt;0 and A[j]&gt;key</span>
6            do A[i+1]←A[i]</span>
7               i←i - 1</span>
8         A[i+1]←key</span>
 
 
 
#include <stdio.h>

int main(void)
{
    int n, i, m, x[101];
    
    while (scanf("%d%d", &n, &m), n || m)
    {
        for (i = 0 ; i < n ; i++)
            scanf("%d", x + i);
        for (i = n ; i && x[i - 1] > m ; i--)
            x[i] = x[i - 1];
        x[i] = m;
        for (i = 0 ; i < n + 1 ; i++)
            printf("%d%c", x[i], (i - n ? ' ' : '\n'));
    }

    return 0;
}
	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值