題目26 關於1 N的整數查詢排序問題

2021-05-07 00:26:55 字數 599 閱讀 8622

題目:此題緣於《程式設計珠璣》,乙個檔案包含最多n個正整數,每乙個都小於

n,每乙個數都不會出現兩次以上。將這個檔案排序。

珠璣上的解法:

/*phase 1: initialize set to empty*/

for  i = [0, n)

bit[i] = 0

/*phase 2: insert present elements into the set*/

for each i in the input file

bit[i] = 1

/*phase 3: write sorted output*/

for i = [0,n)

if bit[i] == 1

write i on the output file

下面的原**包括下面幾個問題的解決方案:

1. 給乙個正整數陣列,按序列印出來

2. 給出乙個正整數陣列,包含1到n的所有數,某乙個數除外,

要你找出這個數。有兩種解法,一種是用跟問題1同樣的方法

用bitmap,另外一種方法是用異或的功能

3. 給出1-n的所有正整數,要求其任意乙個排列,且概率為1/n!.

關於1 n排序問題

我開始不會,多看了劉大大的數書幾遍後,領悟一點。大致的思路是 拿 1 2 3 為例 把每乙個數都做為排頭一次後面的數開始變化排列,比如 1為排頭,2 3 排列。易知 2可作為當前的排頭,後面的數依次是這樣 還沒完 這才1剛剛結束 即一層遞迴結束。後面的就重複上述步驟即可。includeusing n...

將1 n個整數按照字典序進行排序

題意 給定乙個整數n,給定乙個整數k,將1 n個整數按字典順序進行排序,返回排序後第k個元素。多組輸入,t 100,n 1e6 分析 這個題和之前做的模擬出棧的性質挺像的,不是你將1 n個數字排好序或者直接算出第k個數時誰,而是模擬題意的炒作,一步步填充,填充到第k個元素結束 可以分成兩步來做,首先...

1 n整數中1出現的次數

示例 1 輸入 n 12 輸出 5 示例 2 輸入 n 13 輸出 62.1 思路分析 題目要求1 n中1出現的次數,考慮將n轉換為字串,然後統計字元1的個數,但這樣會超時 既然1不行,換一種思路,將n轉換為字串後,可以容易確定n的位數 利用for迴圈,從個位開始直到最高位,計算每一位上1出現的次數...