关注
思路:
1、创建结构体,数据成员:打印编号,在数组中的初始序号,按照打印编号升序排序后的数组编号
2、保存初始顺序
3、按照打印编号升序排序
4、保存排序后顺序关系
5、恢复原来顺序关系
6、此时输出排序后顺序关系,即使正确结果
(注意,排序时相等元素必须交换,建议不要使用算法库里面的排序算法)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef struct node
{
int pri; //打印编号
int before; //打印序列在数组中的序号
int after; //按照打印编号升序排序后,在数组中的序号
}node;
void swap(node &a,node &b)
{
node temp;
temp = a;
a = b;
b = temp;
}
void insertsort1(vector<node> &vec,int len) //按照打印编号插入排序,一定要注意打印编号相等的处理,相等必须交换
{
if (len <= 1) return;
for (int i = 1; i < len; i++)
{
for (int j = i; j>0; j--)
{
if (vec[j].pri >= vec[j - 1].pri) swap(vec[j],vec[j-1]);
}
}
}
void insertsort2(vector<node> &vec, int len)//按照初始数组下标排序,恢复排序前的位置关系
{
if (len <= 1) return;
for (int i = 1; i < len; i++)
{
for (int j = i; j>0; j--)
{
if (vec[j].before < vec[j - 1].before) swap(vec[j], vec[j - 1]);
}
}
}
void rintOrder(const int input[], int len, int output[])
{
if (len<1) return;
vector<node> data(len);
for (int i = 0; i<len; i++) //创建结构体
{
data[i].pri = input[i];
data[i].before = i;
}
insertsort1(data,len); //按照打印编号升序,排序
for (int i = 0; i<len; i++) //保存某一打印编号,第几个输出
{
data[i].after = i;
}
insertsort2(data, len); //恢复数组初始位置关系
for (int i = 0; i<len; i++) //输出数据
{
output[i] = data[i].after;
}
}
int main()
{
int input[] = { 9, 3, 5,3 };
int output[4];
rintOrder(input, 4, output);
return 0;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
04-20 23:51
湖南文理学院 golang 点赞 评论 收藏
分享
05-11 13:46
北京航空航天大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 我因为在开水团面活水被光速开除1.2W
- 2... 字节last day,知无不言!4551
- 3... 分享我的秋招之路(2025届版)3957
- 4... 🐧应届生选offer防踩坑指南:为什么"有鹅选鹅"是当前最佳策略?3547
- 5... 找实习三个月,感觉已无心气3235
- 6... 中金所一面3071
- 7... 字节剪映后端暑期面经(附timeline)2707
- 8... 通过我的工位,能看出我是什么样的人吗?2672
- 9... 你的经历比较单薄, 但简历又弥补了这一点--双非仔个人简历分享2638
- 10... 作为面试官,比较喜欢听到「实习收获」回答是什么样的?2017
正在热议
更多
# 晒一晒你的工位 #
73798次浏览 242人参与
# 24届的你们现状如何了? #
68607次浏览 397人参与
# 华泰证券Fintech星战营 #
191247次浏览 348人参与
# 写给毕业5年后的自己 #
7682次浏览 138人参与
# 电网笔面经互助 #
32901次浏览 327人参与
# 职场捅娄子大赛 #
338605次浏览 3417人参与
# 今年形式下双非本找得到工作吗 #
136330次浏览 1038人参与
# 实习中的菜狗时刻 #
355144次浏览 3262人参与
# 想给25届机械人的秋招建议 #
26279次浏览 218人参与
# 机械人,你的秋招第一份简历被谁挂了 #
137589次浏览 1972人参与
# 工作压力大怎么缓解 #
77123次浏览 923人参与
# 请用你的专业向妈妈表白 #
15757次浏览 111人参与
# 腾讯求职进展汇总 #
830242次浏览 8823人参与
# 面试被问期望薪资时该如何回答 #
248232次浏览 1444人参与
# 25届非技术实习投递记录 #
116154次浏览 969人参与
# 职场情商大赛 #
128290次浏览 650人参与
# 你的秋招第一场笔试是哪家 #
129034次浏览 1402人参与
# 哪些公司笔/面试难度大? #
2728次浏览 20人参与
# 双非本科的出路是什么? #
125311次浏览 1204人参与
# 贝壳求职进展汇总 #
22483次浏览 153人参与
# 互联网回暖,腾讯要招5000人! #
16842次浏览 553人参与