插入排序 詳細解析

2021-08-21 00:18:07 字數 888 閱讀 4730

1.簡介

插入排序(insertion sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到o(1)的額外空間的排序),因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。

2.演算法描述

一般來說,插入排序都採用in-place在陣列上實現。具體演算法描述如下:

1.從第乙個元素開始,該元素可以認為已經被排序

2.取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

3.如果該元素(已排序)大於新元素,將該元素移到下一位置

4.重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

5.將新元素插入到該位置後

6.重複步驟2~5

如果比較操作的代價比交換操作大的話,可以採用二分查詢法來減少比較操作的數目。該演算法可以認為是插入排序的乙個變種,稱為二分查詢排序。

3.使用插入排序為一列數字進行排序的過程 

最差時間複雜度

最優時間複雜度

平均時間複雜度

c#**例項

/// /// 插入排序

///

public class insertionsorter

list[j] = t;}}

}

解析插入排序

先從一段 說起 package insert public class insertsort int array int array int array int array insertsort array,array.length public static void insertsort int...

3 插入排序(詳細)

目錄 sort類在選擇排序中的約定中 每次都將當前元素插入到左側已經排序的陣列中,使得插入之後左側陣列依然有序。插入排序的時間複雜度取決於陣列的初始順序,如果陣列已經部分有序了,那麼逆序較少,需要的交換次數也就較少,時間複雜度較低。public class insertion comparable ...

詳細解析直接插入排序和希爾排序

直接插入排序 1 基本思想 每一趟將乙個待排序的記錄,按其關鍵字的大小插入到已經排好序的一組記錄的適當位置上,直到所有待排序記錄全部插入為止。直接用乙個事例來解釋說明 給一無序的數列 49,38,65,97,76,13,27,49 對於這個進行直接插入排序,如圖 includevoid insert...