原题链接:数组排序
解题思路:
我的解题思路比较简单,就是建立两个数组数组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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复