1008 直接插入排序 小演算法

2021-10-07 00:09:54 字數 952 閱讀 7717

挺水的一道題,這道題我甚至在高中刷題的時候刷到過,也算是一段高中的回憶。但是當時做的時候沒有想起來,有點可惜,這道題的關鍵就是比較、後移、插入。掌握這三個基本就沒有問題了。

不過還會有乙個卡人的小點,就是當第一項進行位移的時候,要在最後把它補上去。因為第一項前面沒有數了,無法繼續比較,程式預設不需要排序,因此就會導致第一項的數沒有發生改變。

time limit: 1 sec memory limit: 64 mb

submit: 1535 solved: 320

編一c程式,該程式可以測試多個測試組,每個測試組它能讀入一串整數(以-9999為結束標記)並對它們進行從小到大直接插入排序,同時輸出排序時對這些整數進行比較的總次數(輸入整數時,相鄰的兩個用空格隔開,整數個數<2000)。

第一行先輸入測試組數t 然後是t個測試組, 每個測試組先輸入整數個數n(2<=n<2000) 然後輸入1行,包含n個整數,每2個整數之間用空格隔開,以-9999為結束標記

對每個測試組輸出2行, 第1行輸出比較次數 第2行輸出排序後的數,2個數之間用乙個空格隔開14

3 2 4 5 -9999

32 3 4 5

hint

#include

intmain()

for(i=

2;i<=t;i++

)//排序開始,從第二項開始

else

//發現比前面的小,後移,繼續往前 }if

(j==0)

//當第一項進行位移的時候,補上第一項

}printf

("%d\n"

,count)

;for

(i=1

;i<=t-

1;i++

)printf

("%d"

,a[i]);

putchar

('\n');

}}

直接插入排序演算法

直接插入演算法 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序演算法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複...

直接插入排序演算法

撲克牌是我們幾乎每個人都可能從事過的遊戲。而最基本的撲克玩法都是一邊摸牌,一邊理牌。假如我們拿到了這樣一手牌,如圖9 5 1。啊,似乎是同花順呀,別急,我們得理一理順序才知道是否是真的同花順。請問,如果是你,應該如何理牌呢?應該說,哪怕你是第一次玩撲克牌,只要認識這些數字,理牌的方法都是不用教的。將...

直接插入排序演算法

每次將乙個待排序的記錄按其關鍵字的大小插到前面已經排序的序列中的適當位置,直到全部記錄插入完畢為止。第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從後向前掃瞄,把第三個數按大小插入到有序表中 依次進行下去,進行了 n 1 趟掃瞄以後就完成了整個排序過程。將待插入...