陣列排序 龐果

2021-06-18 05:37:05 字數 611 閱讀 1327

本題來自caopengcs,只要你有興趣,每個人都可以出題(出題入口在主頁右側邊欄「貢獻題目」內),以下是題目詳情:

給定乙個包含1-n的數列,我們通過交換任意兩個元素給數列重新排序。

求最少需要多少次交換,能把陣列排成按1-n遞增的順序,其中,陣列長度不超過100。

例如:

函式頭部: c/c++ int run(const int *a,int n);

實際上,這個題目是乙個n個連續數的排序,題目中有個條件需要注意一下,比如四個數,肯定是1,2,3,4這四個,不會是1,3,4,5,所以是連續數的排序,要做到交換次數最少,需要做到的只有一點:

每次交換後,交換的數中至少有乙個數不需要在動了,也就是每次交換都要有直接的效果, 

為了滿足這個條件,我們可以這麼來交換:

滿足上面三點要求並進行交換就行了。

**很簡單,也沒做什麼優化,都傳到github上了。

int run(const int *a,int n)

{ int *b=(int *)malloc(sizeof(int)*n);

int count=0;

int temp;

for(int i=0;i

龐果英雄會 陣列排序

陣列排序 本題來自caopengcs,只要你有興趣,每個人都可以出題 出題入口在主頁右側邊欄 貢獻題目 內 以下是題目詳情 給定乙個包含1 n的數列,我們通過交換任意兩個元素給數列重新排序。求最少需要多少次交換,能把陣列排成按1 n遞增的順序,其中,陣列長度不超過100。例如 原陣列是3,2,1,我...

龐果英雄會 覆蓋數字

龐果覆蓋數字原題如下 給定整數區間 a,b 和整數區間 x,y 你可以使用任意多次a,b之間的整數做加法,可以湊出多少個 x,y 區間內的整數?輸入 a,b,x,y,其中1 a b 1000000000,1 x y 1000000000。輸出 用 a,b 內的整數做任意多次加法,可以得到多少個 x,...

龐果網之高斯公式

題目 題目詳情 高斯在上小學時發明了等差數列求和公式 1 2 100 5050。現在問題在於給你乙個正整數n,問你他可以表示為多少種連續正整數之和?自身也算 輸入格式 多組資料,每組資料一行,乙個正整數n。0輸出格式 每組資料一行,包含乙個正整數,表示結果。答題說明 輸入樣例 5120 輸出樣例 2...