我是靠谱客的博主 简单冷风,最近开发中收集的这篇文章主要介绍程序员代码面试指南---023自然数数组的排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

给定一个长度为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自然数数组的排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部