求陣列的逆序對(百度筆試題)

2021-05-02 15:21:38 字數 2707 閱讀 5712

多人排成乙個佇列

,我們認為從低到高是正確的序列

,但是總有部分人不遵守秩序。如果說

,前面的人比後面的人高

(兩人身高一樣認為是合適的

),那麼我們就認為這兩個人是一對「搗亂分子」

,比如說

,現在存在乙個序列:

176,178,180,170,171

這些搗亂分子對為

<176,170 >,

<176,171 >,

<178,170 >,

<178,171 >,

<180,170 >,

<180,171 >,那麼,

現在給出乙個整型序列

,請找出這些搗亂分子對的個數

(僅給出搗亂分子對的數目即可

,不用具體的對)

要求:輸入:

為乙個檔案

(in)

,檔案的每一行為乙個序列。序列全為數字,數字間用」

,」分隔。

輸出:為乙個檔案

(out)

,每行為乙個數字,表示搗亂分子的對數。

詳細說明自己的解題思路,說明自己實現的一些關鍵點。並給出實現的**

,並分析時間複雜度。

限制:輸入每行的最大數字個數為

100000

個,數字最長為

6位。程式無記憶體使用限制。

解:此題的意思就是統計乙個陣列中的逆序對的個數為多少。根據歸併排序演算法的思想,可以對這個問題進行一下歸併排序。然後就能統計出逆序對的個數。例如有

16個數的陣列,則進行歸併排序的演算法過程如下:

0

1)(

2

3)(

0

3)(

4

5)(

6

7)(

4

7)(

0

7)(

8

9)(

10

11)(

8

11)(

12

13)(

14

15)(

12

15)(

8

15)(

0

15

其中(

0

1)表示陣列中第

0個數和第

1個數進行合併。

**如下:

百度筆試題 陣列重排

給定乙個存放整數的陣列,重新排列陣列使得陣列左邊為奇數,右邊為偶數。要求 空間複雜度o 1 時間複雜度為o n 注 題目 v july v 思路 我的想法是從兩邊遍歷,從左邊遍歷的如果是奇數就繼續留著,從右邊遍歷的如果是偶數就繼續留在右邊,如果是奇數就和從左邊遍歷遇到的第乙個偶數交換,我一下就有了思...

百度筆試題

一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...

百度筆試題

一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...