关注
思路:
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;
}
查看原帖
点赞 评论
相关推荐
2025-12-29 23:01
江西财经大学 外贸业务员 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 赚钱的意义在这一刻具象化 #
7224次浏览 174人参与
# 快手年终开大包 #
1439次浏览 38人参与
# 今年春招是金一银二嘛? #
14711次浏览 179人参与
# AI求职实录 #
8504次浏览 250人参与
# 没关系,至少我的__很曼妙 #
6273次浏览 122人参与
# 初创公司值得加入吗? #
37275次浏览 217人参与
# 抛开难度不谈,你最想去哪家公司? #
8114次浏览 166人参与
# 为什么有人零实习也能进大厂? #
8234次浏览 189人参与
# 牛客吐槽大会 #
5747次浏览 114人参与
# 1月小结:你过的开心吗? #
2952次浏览 62人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
10938次浏览 268人参与
# 你的第一家实习公司是什么档次? #
6362次浏览 97人参与
# 当你问AI“你会取代我的工作吗”,它说_? #
5393次浏览 173人参与
# 你的landing期是如何度过的? #
11397次浏览 224人参与
# 除了Java,最推荐学什么技术? #
9011次浏览 201人参与
# 你今年的平均薪资是多少? #
200893次浏览 1012人参与
# 如果能重来,就业or读研你选哪个? #
270343次浏览 2601人参与
# 机械人你知道哪些单休企业 #
83390次浏览 417人参与
# 你觉得什么岗位会被AI替代 #
37287次浏览 256人参与
# 秋招结束之后的日子 #
117266次浏览 1062人参与
查看12道真题和解析