插入排序總結

2021-08-27 18:52:06 字數 1066 閱讀 3637

所謂插入排序,就是把一組亂序的資料,依次拿出乙個,放入到一組已經排好序的資料中的正確的位置。又可以分為:①直接插入排序、②折半插入排序、③二路插入排序、④表插入排序、⑤希爾排序、

一、直接插入排序:

相對比較簡單的一種排序方法,就是按照概念一步一步的操作,可以使用乙個for迴圈實現,具體**如下:

//直接插入排序

void strinsertsort(seqlist &s, int n)

else

}for(int j=i; j>high+1; j--)

s[high+1] = s[0];

}}

三、二路插入排序

二路,就是把待插入的資料往兩個不同的方向進行插入,具體往哪個方向,要看它比一組已經有序的資料的頭部的小,還是比尾部的大。如果比頭部的小就在頭部之前插入,如果比尾部的大就在尾部之後插入,否則從尾部開始,進行直接插入排序。使用二路插入排序,可以減少資料的比較次數。這裡為了方便使用了等長的輔助空間。

//二路插入排序

void twowayinsertsort(seqlist &s, int n)

elseslnode;

typedef slnode table[maxsize];

//表插入排序

void tableinsertsort(table &s, int n)

{ s[0].link = 1;

int p,q;

for(int i=2; i五、希爾排序

將待排序資料分割為若干個子串行,分別對子序列進行直接插入排序,子串行排序完之後整體已經基本有序,然後再對所有資料進行一次直接插入排序。希爾排序使用的增量序列的取法要值的注意,目前還沒有乙個最好的增量序列,但應使增量序列中沒有除1之外的公因子,並且最後乙個值必須等於1。

//希爾排序

void shellsort(seqlist &s, int n, int dlta, int t)

{ for(int i=0; i0&&s[0]祝大家學習愉快,工作順利。

插入排序總結

典型的比較排序演算法 插入排序 堆排序 快速排序。根據演算法導論中出現的先後順序,首先出場的是插入排序 一.原版插入排序偽 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...

排序總結 插入排序

created by liyuanshuo on 2017 3 17.include insertion sort.h a unsort array n total numbers of element in array 1.從第乙個元素開始,該元素可以認為是已經被排序 2.取出下乙個元素,在已經排...