面試經典演算法2之插入排序

2021-06-18 07:21:02 字數 584 閱讀 8318

插入排序

:將待排序的資料元素與前面已經排好序的資料比較,將其插入到其中。

每趟都是從待排序的資料元素開始掃瞄。

典型的插入排序演算法有:

(1) 簡單直接插入排序

(2) 希爾排序

簡單直接插入排序**:

bool insertsort(int a,int n)

for (int i=1;i=0&&a[j]=val,val插在j的後面

a[j+1] = val;

} return true;

}

簡單直接插入排序時間複雜度為o(n2),它是一種穩定的排序演算法。

希爾排序:又叫縮小增量的排序演算法。假設增量值為d,則將隔間為d的元素分成一組,然後對每一組採用直接插入排序。

希爾排序**如下:

//希爾排序又稱縮小增量排序演算法

bool shellsort(int a,int n)

int d = n/2;

while(d>=1)

{ for (int i=d;i=0&&a[j]希爾排序時間複雜度為o(n*log2n),它是一種不穩定的排序演算法。

經典排序演算法2(插入排序)

a 插入排序分類 插入排序主要做兩件事,一是尋找插入點,二是移動插入點左側的資料 所以根據插入點的不同我們將插入排序又分為直接插入排序 折半插入排序和二路插入排序。原理 我將依次遍歷陣列中的元素,將陣列分為 使用中的 和 待使用中的 兩部分,在使用中的 資料時排序好的,待使用中的 資料時未排序的,我...

經典演算法之插入排序

一 基本思路 將乙個待排序的記錄,按照關鍵字大小插入到前面已經拍好的子串行的適當位置,直到全部記錄插入完成為止。如果序列基本有序,效率很高。二 include stdafx.h include includeusing namespace std void swap int a,int b void...

經典演算法之插入排序

問題 有一陣列a,長度為n,把陣列中的元素小到大重新排列。思路 我們把陣列分為已排序和未排序兩部分,把未排序的元素一次乙個插入到已排序部分的合適位置上。已排序部分逐漸增大,直到整個陣列變成有序的。一趟排序 假設從第n個元素開始是無序的,而其前面n 1個元素是有序的。把a n 取出來放入temp中。然...