概述
题目描述
给定一个长度为N的整形数组arr,其中有N个互不相等的自然数1-N。请实现arr的排序,但是不要把下标0∼N−1位置上的数通过直接赋值的方式替换成1∼N
[要求]
时间复杂度为O(n),空间复杂度为O(1)
输入描述
第一行有一个整数N。表示数组长度
接下来一行有N个互不相等的自然数1-N。
输出描述
输出N个整数表示排序后的结果
示例
输入:
5
2 1 4 5 3
输出:
1 2 3 4 5
解题思路
啊……这个题真的是……,直接在对应数组下标输入,然后输出就行,没什么技巧,可能这个是偷懒的方式?哈哈哈哈
实现代码
/*
* @Description: 自然数数组的排序
* @Author:
* @Date: 2020-11-13 22:03:44
* @LastEditTime: 2020-11-13 22:10:03
* @LastEditors: Please set LastEditors
*/
#include<iostream>
#include<vector>
using namespace std;
int main(){
int N;
cin >> N;
vector<int> arr(N + 1);
int temp;//暂时存放数
for(int i = 0;i < N;i++){
cin >> temp;
arr[temp] = temp;//对应下标输入
}
for(int i = 1;i < arr.size();i++){
cout << arr[i] << " ";
}
system("pause");
return 0;
}
最后
以上就是简单冷风为你收集整理的程序员代码面试指南---023自然数数组的排序的全部内容,希望文章能够帮你解决程序员代码面试指南---023自然数数组的排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复