解题思路:

我的解题思路比较简单,就是建立两个数组数组A和数组B,数组B用来保存数组A的值

对数组B的值进行快排,这样子能让数组B进行从小到大进行排序,同时也就是对应数组A下标

例如数组a[4]={0,3,1,2}

             b[4]={0,1,2,3};

这样子我们对1,3,2三个数进行排序,B数组就能保存A数组元素的第几大小了

接下来我们就可以运用两个for循环进行数组下标的输出了

for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
		if(a[i]==b[j]){
			cout<<j<<" ";
			break;
		}


注意事项:因为下标排序是从1开始的,所有快速排序时需要排序到n+1;

参考代码:

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
	int a[1001]={0},b[1001]={0};
	int n;
	while(cin>>n){
		for(int i=1;i<=n;i++){
			cin>>a[i];
			b[i]=a[i];
		}
		sort(b,b+n+1);  //下标是从1开始的
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(a[i]==b[j]){
					cout<<j<<" ";
					break;    //如果找到就直接退出
				}
		cout<<endl;
	}
	return 0;
}


点赞(7)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论