演算法題 有趣的排序

2021-08-02 00:07:54 字數 1115 閱讀 5658

度度熊有乙個n個數的陣列,他想將陣列從小到大 排好序,但是萌萌的度度熊只會下面這個操作:

任取陣列中的乙個數然後將它放置在陣列的最後乙個位置。

問最少操作多少次可以使得陣列從小到大有序?

輸入描述:

首先輸入乙個正整數n,接下來的一行輸入n個整數。(n <= 50, 每個數的絕對值小於等於1000)

輸出描述:

輸出乙個整數表示最少的操作次數。

輸入例子:

4 19 7 8 25

輸出例子:

2

複雜度 nlogn 但是需要乙個 n 的輔助陣列

用乙個輔助陣列對所有元素進行排序,從小到大排序

從第乙個排好序的元素開始,即最小的元素開始與沒排好序陣列元素比較,

檢查有多少個已經是從最小到大好序的,位置可以不連續,但是大的元素必須在小的元素後面,

統計出一共有 count個,這些元素是不需要移動的元素

一共有 n 個元素,所以需要移動 n - count 次

首先將陣列排序,然後按照排序的順序,查詢其在原陣列的相對順序是否與排序後一致:例:

19 7 8 25 10

排序後:

7 8 10 19 25

首先查詢7在原陣列位置:2

然後查詢8在原陣列位置:3>2

然後查詢10在原陣列位置:5>3

然後查詢19在原陣列位置:1<5

則從19開始,需要將所有大於等於19的數執行一次放置操作

#include 

#include

#include

#include

using

namespace

std;

int func(vector

& vec)

else

}return0;}

int main()

cout

<< func(vec) << endl;

return

0;}

演算法題 有趣的數字

小q今天在上廁所時想到了這個問題 有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢?輸入描述 輸入包含多組測試資料。對於每組測試資料 n 本組測試資料有n個數 a1,a2 an 需要計算的資料 保證 1 n 100000,0 ai int max.輸出描述 對於每組資料,輸出兩個數,第乙個數表...

演算法導論有趣題 4 2,6 3

4 2 題目描述 某陣列a 1,2,n 含有所有從0到n的證書,但其中乙個整數不在陣列中。通過輔助陣列b 0,n 來記錄a中出現的整數 1 在o n 時間找到缺失整數 2 若陣列中每個數值是二進位制的,不能直接對每個數取出其數值,則如何找到缺失 解答 1 遍歷陣列a,將每個出現的值儲存在b中下標對應...

乙個有趣的排序題

前段時間,遇到乙個有趣的程式設計題,見下 1 輸入 陣列 1,1,3,3,3,6,7,8 有序,有重複,請寫一段 將陣列內容變為1,3,6,7,8,x,x,x,並返回前面無重複序列的長度5 要求 在原陣列中操作 不能開闢新陣列 一次遍歷完成.本人的解法如下 public static void ma...