关注
思路:
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;
}
查看原帖
点赞 评论
相关推荐
11-28 16:10
门头沟学院 C++ 点赞 评论 收藏
分享
10-11 12:13
湖北工业大学 Java 点赞 评论 收藏
分享
牛客热帖
正在热议
# 拼多多求职进展汇总 #
233451次浏览 2032人参与
# 在职场上,你最讨厌什么样的同事 #
5749次浏览 81人参与
# 北方华创开奖 #
66033次浏览 549人参与
# 25届秋招总结 #
396998次浏览 3978人参与
# 哪些公司校招卡第一学历 #
32857次浏览 105人参与
# 地方国企笔面经互助 #
6560次浏览 16人参与
# 阿里云管培生offer #
59103次浏览 1748人参与
# ai智能作图 #
21535次浏览 262人参与
# 硬件兄弟们 甩出你的华为奖状 #
77956次浏览 625人参与
# 实习,投递多份简历没人回复怎么办 #
2436096次浏览 34703人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
4736次浏览 47人参与
# 实习与准备秋招该如何平衡 #
722909次浏览 8551人参与
# 我的实习求职记录 #
6122405次浏览 83954人参与
# 如果再来一次,你还会选择这个工作吗? #
110667次浏览 1112人参与
# 25届机械人为了秋招做了哪些准备? #
25032次浏览 356人参与
# 签了三方后想毁约怎么办 #
18567次浏览 111人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
9972次浏览 214人参与
# 机械求职避坑tips #
22190次浏览 241人参与
# 游戏求职进展汇总 #
52808次浏览 344人参与
# 夸夸我的求职搭子 #
132042次浏览 1360人参与
# 腾讯求职进展汇总 #
207626次浏览 1694人参与
# 实习想申请秋招offer,能不能argue薪资 #
35796次浏览 308人参与