两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

Dotcpp  >  編程題庫  >  藍(lán)橋杯算法提高VIP-插入排序
題目 1528:

藍(lán)橋杯算法提高VIP-插入排序

時間限制: 2s 內(nèi)存限制: 192MB 提交: 1543 解決: 322

題目描述

排序,顧名思義,是將若干個元素按其大小關(guān)系排出一個順序。形式化描述如下:有n個元素a[1],a[2],…,a[n],從小到大排序就是將它們排成一個新順序a[i[1]]< a[i[2]]< …< a[i[n]]
i[k]為這個新順序。
插入排序,顧名思義,是通過插入操作完成排序。其直覺和方法來源于打牌時安排牌的方法。每次摸起一張牌,你都會將其插入到現(xiàn)在手牌中它按順序應(yīng)在的那個位置。插入排序每一步都類似這個摸牌過程。比如現(xiàn)在有整數(shù)數(shù)組:{3,  1,  5,  4,  2}
第一步:插入3  得到新序列{3}
第二步:插入1  得到新序列{1  3}
第三步:插入5  得到新序列{1  3  5}
第四步:插入4  得到新序列{1  3  4  5}
第五步:插入2  得到新序列{1  2  3  4  5}
為了看程序中如何完成插入過程,我們以第五步為例:
初始時:1  3  4  5  2
將2存入臨時變量tmp
將下標(biāo)j指向2之前的元素5,然后根據(jù)tmp和a[j]的大小關(guān)系決定該元素是否應(yīng)該后移。如果a[j]> tmp,則將a[j]后移到a[j+1],序列變成1  3  4  5  5。
將下標(biāo)j前移
判斷a[j]> tmp,后移a[j]到a[j+1],得到1  3  4  4  5
將下標(biāo)j前移
判斷a[j]> tmp,后移a[j]到a[j+1],得到1  3  3  4  5
因為a[j]< =tmp,所以將tmp放回a[j+1],得到  1  2  3  4  5
現(xiàn)在,輸入n個整數(shù),根據(jù)以上算法,輸出插入排序的全過程。


輸入格式

第一行一個正整數(shù)n,表示元素個數(shù) 

第二行為n個整數(shù),以空格隔開 


數(shù)據(jù)規(guī)模和約定
n< =100
整數(shù)元素在int范圍內(nèi)

輸出格式

   有n個元素,因此輸出部分分為n個部分,每個部分開頭行為:Insert  element[i],i為第幾個元素。然后對于每一個部分,輸出該部分該元素在插入排序過程中的每一步產(chǎn)生的新序列,初始時的序列以Init:打頭,然  后每一步后移數(shù)組元素后的元素序列以Move  back:打頭,最后得到的最終結(jié)果序列以Final:打頭。序列元素間以一個空格隔開。示例請看樣例輸出。每一個部分的Insert  element[i]之后的每一步的輸出行之前要縮進(jìn)兩格,即輸出兩個空格。

樣例輸入

5
3 1 5 4 2

樣例輸出

Insert element[1]:
Init:3
Final:3
Insert element[2]:
Init:3 1
Move back:3 3
Final:1 3
Insert element[3]:
Init:1 3 5
Final:1 3 5
Insert element[4]:
Init:1 3 5 4
Move back:1 3 5 5
Final:1 3 4 5
Insert element[5]:
Init:1 3 4 5 2
Move  back:1 3 4 5 5
Move  back:1 3 4 4 5
Move  back:1 3 3 4 5
Final:1 2 3 4 5

提示

零基礎(chǔ)同學(xué)可以先學(xué)習(xí)視頻課程,包含C/C++、Python、百練、藍(lán)橋杯輔導(dǎo)、算法數(shù)據(jù)結(jié)構(gòu)等課程,提供視頻講解以及配套習(xí)題,還有老師答疑,點擊這里了解課程詳情
標(biāo)簽