九度OJ-题目1167-数组排序-结构体数组排序
来源:互联网 发布:程序员 自由职业者 编辑:程序博客网 时间:2024/05/22 00:54
题目1167:数组排序
原题链接:http://ac.jobdu.com/problem.php?pid=1167
题目描述:
输入一个数组的值,求出各个值从小到大排序后的次序。
输入:
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。
输出:
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。
样例输入:
4
-3 75 12 -3
样例输出:
1 3 2 1
来源:
2009年北京航空航天大学计算机研究生机试真题
思路
创建结构体数组,用来保存输入的数和排名位置。然后先排下序,再依次输出即可。
AC代码
#include<bits/stdc++.h>using namespace std;struct num{ int no; int val;}node[10005]; int input[10001];bool cmp(num a,num b){//从小到大排序 return a.val < b.val;}int main(){ int n; while(~scanf("%d",&n)){ for(int i = 0;i < n;i++){ cin >> node[i].val; input[i] = node[i].val; //input数组保存原始输入数据顺序 } sort(node,node+n,cmp); int cur = 1;//记录排名(允许并列) node[0].no = 1; for(int i = 1;i < n;i++){ if(node[i].val == node[i-1].val){ node[i].no = cur; }else{ cur++; node[i].no = cur; } } int first = true; for(int i = 0;i < n;i++){//对于每个输入 for(int j = 0;j < n;j++){//去查查他在数组中的位置 if(input[i] == node[j].val){ if(first){ cout << node[j].no; first = false; }else{ cout << " " << node[j].no; } break; } } } cout << endl; } return 0;}
阅读全文
1 0
- 九度OJ-题目1167-数组排序-结构体数组排序
- 九度oj-1167-数组排序
- 【九度】题目1167:数组排序
- 九度OJ 1167:数组排序 排序序列的恢复
- 九度OJ 1167:数组排序 (排序)
- [九度oj]题目1349:数字在排序数组中出现的次数
- 九度OJ-题目1349:数字在排序数组中出现的次数
- 九度1167 数组排序
- 题目1167:数组排序
- 题目1167:数组排序
- 题目1167:数组排序
- 题目1167:数组排序
- 题目1167:数组排序
- 题目1167:数组排序
- 九度OJ-题目1195:最长&最短文本-结构体数组比较
- 九度OJ 1061 成绩排序(结构体排序)
- 九度OJ 1023 EXCEL排序(结构体排序)
- 九度OJ 1348 数组中的逆序对 -- 归并排序
- 获取config配置文件内容
- 状压搜索 Circling Round Treasures:CodeForces
- 异常问题Software caused connection abort: socket write error
- 华为笔试_扑克牌大小
- Sublime Text 3 for MAC 快捷键
- 九度OJ-题目1167-数组排序-结构体数组排序
- 1013. Battle Over Cities (25)
- imagettftext
- Spring Boot系列教程六:日志输出配置log4j2
- 使用 Ambari 安装 Hadoop 集群
- 2016最新CocoaPods安装和错误解决
- des 3des aes ides rsa 对称加密算法
- MPEG4与.mp4
- 守护进程(Daemon)