自然數陣列的排序

2021-10-10 08:13:34 字數 1083 閱讀 7681

自然數陣列的排序

給定乙個長度為n的整形陣列arr,其中有n個互不相等的自然數1-n。請實現arr的排序,但是不要把下標0∼n

−1

0 \sim n-1

0∼n−

1位置上的數通過直接賦值的方式替換成1∼n

1 \sim n

1∼n

[要求]

時間複雜度為o(n

)o(n)

o(n)

,空間複雜度為o(1

)o(1)

o(1)

輸入描述:

第一行有乙個整數n。表示陣列長度

接下來一行有n個互不相等的自然數1-n。

輸出描述:

輸出n個整數表示排序後的結果

示例1輸入

5

2 1 4 5 3

輸出
1 2 3 4 5
備註:

1 ⩽n

⩽105

1 \leqslant n \leqslant 10^5

1⩽n⩽10

5題解:

此題最終的狀態是:a[i] = i + 1(下標從0開始)。我們可以從左往右遍歷,對每個元素:

這樣遍歷完整個陣列,最多交換 n-1 次,即可把所有元素交換到其相應的位置,時間複雜度o(n

)o(n)

o(n)

,額外的空間複雜度o(1

)o(1)

o(1)

。**:

#include

#include

using

namespace std;

const

int n =

100010

;int n;

int a[n]

;int

main

(void

)for

(int i =

0; i < n;

++i)

printf

("%d "

, a[i]);

return0;

}

陣列與矩陣 自然數陣列的排序

題目 自然數陣列的排序 要求 給定乙個長度為n的整型陣列arr,其中有n個互不相等的自然數1 n,請實現arr的排序 但是不要把下標0 n 1位置上的數通過直接賦值的方式替換成1 n 時間複雜度o n 空間複雜度o 1 include include using namespace std void...

Python Numpy 自然數填充陣列

今天學習numpy時,想到了乙個小問題。在numpy中,隨機生成array是比較容易的,用np.random.rand即可。如下 a np.random.rand 3,4 可得 array 0.05301444,0.88175316,0.01061948,0.52498083 0.51335312,...

連續的自然數相加

正整數中有些數字是可以由連續的自然數相加而得,比如 1 2 3 4 5 9 2 3 4 9 這裡再列出它的三個問題 1 寫乙個程式,對於任意64位正整數,輸出它所有可能的連續自然數之和的算式?2 怎麼樣的數字是不能由連續的自然數相加而得,並且證明?3 64位正整數範圍內子串行數目最多的數是哪乙個?能...