QvQ


私信TA

用户名:927937414

访问量:30539

签 名:

还是好好学习吧

等  级
排  名 79
经  验 9650
参赛次数 9
文章发表 44
年  龄 19
在职情况 学生
学  校
专  业 软件工程

  自我简介:

还没学算法的弱鸡

解题思路:

我的解题思路比较简单,就是建立两个数组数组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;
}


 

0.0分

10 人评分

  评论区

  • «
  • »