深入浅出学算法013-军事机密-------插入,选择,冒泡效率

题目描述

军方截获的信息由n(n<=30000)个数字组成,因为是敌国的高端秘密,所以一时不能破获。最原始的想法就是对这n个数进行小到大排序,每个数都对应一个序号,然后对第i个是什么数感兴趣,现在要求编程完成。

输入

第一行n,接着是n个截获的数字,接着一行是数字k,接着是k行要输出数的序号。

输出

k行序号对应的数字。

样例输入

5
121 1 126 123 7
3
2
4
3

样例输出

7
123
121

这个题主要考排序,不过数据太大,对时间有要求,对于插入,选择,冒泡这三种排序,插入效率最高,选择其次,冒泡最低,提交之后,选择,冒泡时间超限10%,插入排序ac了,所以仅仅掌握一种排序方式是不够的,下面是插入,选择,冒泡三种方式的代码

#include<stdio.h>//插入排序 
int main()
{
	int n,i,j,k,t,a[31000],x,m;
	while(scanf("%d",&n)!=EOF)
	{
		scanf("%d",&a[0]);
		t=1;
		for(i=1;i<n;i++)
		{
			scanf("%d",&x);//依次输入 
			for(j=0;j<t;j++)
			{
				if(x<a[j])
				{
					break;//找到比a[i]大的第一个数
				}
			}
			for(k=t;k>j;k--)
			{
				a[k]=a[k-1];//依次后移 
			}
			a[j]=x;
			t++;
		}
		scanf("%d",&m);
		for(i=0;i<m;i++)
		{
			scanf("%d",&x);
			printf("%d\n",a[x-1]);
		}
	}
	return 0;
}
#include<stdio.h>//选择排序 
int main()
{
    int n,i,j,a[30000],t,x,k;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(a[i]>a[j])
                {
                    t=a[i],a[i]=a[j],a[j]=t;
                }
            }
        }
        scanf("%d",&x);
        for(i=1;i<=x;i++)
        {
            scanf("%d",&k);
            printf("%d\n",a[k-1]);
        }
    }
    return 0;
 
}
#include<stdio.h>
int main()//冒泡排序 
{
    int n,i,j,a[31000],t,x,k;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<n-1;i++)//,i控制趟数,n个数排序,需要进行n-1趟 
        {
            for(j=0;j<n-i-1;j++)//j控制比较次数,第i趟需要n-i次两两比较 
            {
                if(a[j]>a[j+1])//相邻两个元素比较,从小到大排序  
                {
                    t=a[j],a[j]=a[j+1],a[j+1]=t;
                }
            }
        }
        scanf("%d",&x);
        for(i=1;i<=x;i++)
        {
            scanf("%d",&k);
            printf("%d\n",a[k-1]);
        }
    }
    return 0;
 
}
发布了37 篇原创文章 · 获赞 3 · 访问量 1190

猜你喜欢

转载自blog.csdn.net/qq_45721778/article/details/103897157