資料結構排序演算法之——插入排序(insert sort)
**很多地方借鑑了 他的思想,
本人認為該作者已經寫的很好了,只是在他的基礎上加入了一些自己的理解和說明
維基百科:
參考部落格 :
最近一次更新時間 2023年09月15日
更新型別:
更新了二叉查詢插入
插入排序的基本思想(由大到小):
最開始時,將第乙個位置(也就是陣列中下標為0的元素)的元素看做有序的,將後面的元素與它進行比較,如果後面的比前面的大,則將後面的和前面的交換位置
依次在後面的無序的元素中選取第乙個無序數與前面已經有序的元素進行比較找到乙個合適的位置(如果從有序的位置從前向後比較,則找到第乙個不大於它的數,如果從後向前找,是找第乙個不小於它的數),將插入位置到待有序結尾的位置依次向後移動乙個位置,將帶插入元素插入當前有序的陣列,形成新的有序陣列
**:void insert_sort(int array, int arraylen)
// 將元素插入陣列中
array[k] = tempinsertnum;
// 已經成功插入 ,執行下一次外迴圈
break;}}
}一種該進的思想是: 在從有序的後面開始比較,每比較一次向後移動一次
直到找到合適的插入位置結束
void insert_sort_improve1(int array, int arraylen)
// 多執行了一次 -- j
array[j + 1] = tempinsertnum;}}
還有一種改進思想是使用值交換來代替資料的移動
void insert_sort_improve2(int array, int arraylen)
還有一種利用二分查詢插入位置的插入排序
原始碼如下;
void insert_binary_sort(int array, int arraylen)
array[insertpos] = insertnum;
++i;
}二分查詢:
int binary_search(int array, int low, int height, int searchkey)
else if (searchkey < array[mid])
}return low;
插入排序總結
典型的比較排序演算法 插入排序 堆排序 快速排序。根據演算法導論中出現的先後順序,首先出場的是插入排序 一.原版插入排序偽 1.for j 2 to a.length 為陣列a的長度 2.for i j 1 downto 1 3.if a i a i 1 4.exchange a i with a ...
總結 插入排序
一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 1 從第乙個元素開始,該元素可以認為已經被排序 2 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 3 如果該元素 已排序 大於新元素,將該元素移到下一位置 4 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 5...
插入排序總結
所謂插入排序,就是把一組亂序的資料,依次拿出乙個,放入到一組已經排好序的資料中的正確的位置。又可以分為 直接插入排序 折半插入排序 二路插入排序 表插入排序 希爾排序 一 直接插入排序 相對比較簡單的一種排序方法,就是按照概念一步一步的操作,可以使用乙個for迴圈實現,具體 如下 直接插入排序 vo...