博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2009年北京航空航天大学计算机研究生机试真题,数组排序
阅读量:5326 次
发布时间:2019-06-14

本文共 1435 字,大约阅读时间需要 4 分钟。

题目1167:数组排序

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:2107

解决:654

题目描述:

输入一个数组的值,求出各个值从小到大排序后的次序。

输入:

输入有多组数据。

每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。

输出:

各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。

样例输入:
4-3 75 12 -3
样例输出:
1 3 2 1
来源:
-------
这道题的题干有点难理解,不看样例输入和输出你完全不知道它想表达什么意思。
可以这样理解:将一个无序数组排序并删除重复数值以后,旧数组的每个值在新数组中的位序。
这样通过以下三步可以达成目的:
1、将无序数组排序,生成新数组。
2、将新数组重复值删除。
3、遍历旧数组,输出旧数组每个值在新数组中的位序。
C++代码如下:
1 #include 
2 #include
3 using namespace std; 4 5 //定位函数,参数依次为:待查找数组,查找次数,查找值 6 int locate(int array[], int n, int value) 7 { 8 for(int i=0; i
库,多快好省,比较赖皮。默认为升序排列。42 sort(result, result+length);43 //去除重复元素,count为删掉的元素数44 int count = unique(result, length);45 46 int resultLength = length - count;47 //遍历原数组,输出其每个元素在新数组中的位序48 for(i = 0; i< length; i++)49 {50 printf("%d", locate(result, resultLength, input[i]));51 if(i != length - 1)52 printf(" ");53 }54 55 printf("\n");56 }57 return 0;58 }

 已AC:

1 /**************************************************************2     Problem: 11673     User: kkzxak474     Language: C++5     Result: Accepted6     Time:70 ms7     Memory:1012 kb8 ****************************************************************/

 

 
今天下午的成果,编程学习算是开了个头。

转载于:https://www.cnblogs.com/kkzxak47/archive/2013/02/25/cpp101.html

你可能感兴趣的文章
C语言栈的实现
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
使用命令创建数据库和表
查看>>
【转】redo与undo
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
标识符
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
php中的isset和empty的用法区别
查看>>