重囗另类BBWSeⅹHD,av狼论坛,精品一卡2卡三卡4卡乱码理论,体育生gv老师浪小辉3p警察

程序算法藝術與實踐:經典排序算法之插入排序 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ipr-jzsc.com - 電腦資料】

    插入排序(Insertion Sort)的基本思想是每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到全部記錄插入完成為止,

程序算法藝術與實踐:經典排序算法之插入排序

基本思想與偽代碼

    經過j-1遍處理后,A[1..j-1]己排好序。第j遍處理僅將A[j]插入L[1..j-1]的適當位置,使得A[1..j]又是排好序的序列。要達到這個目的,我們可以用順序比較的方法。首先比較A[j]和A[j-1],如果A[j-1]≤ A[j],則A[1..j]已排好序,第i遍處理就結束了;否則交換A[j]與A[j-1]的位置,繼續比較A[j-1]和A[j-2],直到找到某一個位置i(1≤i≤j-1),使得A[j] ≤A[j+1]時為止。用偽碼描述如下:

算法: InsertSort(A,n)輸入:n個數組A輸出:按照遞增順序的數組A1. for j ← 2 to n do2.    x←A[j]3.    i ← j-1                       //行3到行7把A[j]插入A[1.....j-1]之中4.    while i >0 and x 如下圖所示演示了對4個元素進行插入排序的過程,共需要(a),(b),(c)三次插入。對4個元素進行插入排序</p><p>    <img alt="/" src="http://img2.shangxueba.com/img/uploadfile/20150924/15/4B074EF11CDA1D4E4FDFB22345370710.gif" /></p><p>    在插入排序算法中,為了寫程序方便我們可以引入一個哨兵元素A[0],它小于A[1..n]中任一記錄。所以,我們設元素的類型ElementType中有一個常量-∞,它比可能出現的任何記錄都小。如果常量-∞不好事先確定,就必須在決定A[i]是否向前移動之前檢查當前位置是否為1,若當前位置已經為1時就應結束第i遍的處理。另一個辦法是在第i遍處理開始時,就將A[i]放入A[0]中,這樣也可以保證在適當的時候結束第i遍處理。</p><H4>效率分析</h4></p><p>    考慮算法Insertion_Sort的復雜性。對于確定的i,內while循環的次數為O(i),所以整個循環體內執行了∑O(i)=O(∑i),其中i從2到n。即比較次數為O(n2)。如果輸入序列是從大到小排列的,那么內while循環次數為i-1次,所以整個循環體執行了∑(i-1)=n(n-1)/2次。由此可知,最壞情況下,Insertion_Sort要比較Ω(n^2)次。如果元素類型是一個很大的紀錄,則算法第5行要消耗大量的時間,因此有必要分析移動元素的次數。經過分析可知,平均情況下第5行要執行n(n-1)/4次,分析方法與冒泡排序的分析相同。如果移動元素要消耗大量的時間,則可以用鏈表來實現線性表。</p><H4>Insertion_Sort實現</h4></p><p>    根據插入排序偽碼思想,實現算法代碼如下所示:</p>
電腦資料程序算法藝術與實踐:經典排序算法之插入排序》(http://www.ipr-jzsc.com)。那么如下代碼呢>_<:</p>

最新文章
主站蜘蛛池模板: 梨树县| 阳朔县| 无棣县| 嘉祥县| 安国市| 吉隆县| 肃北| 灌云县| 兖州市| 临漳县| 阜城县| 宝坻区| 翁源县| 大洼县| 昌平区| 垦利县| 嵩明县| 菏泽市| 桃园市| 星座| 郧西县| 鹤山市| 当涂县| 伊春市| 长丰县| 桐柏县| 博兴县| 吉水县| 屯留县| 手游| 开鲁县| 乌鲁木齐县| 宿松县| 乐昌市| 子洲县| 改则县| 牟定县| 石城县| 禄劝| 东源县| 浪卡子县|