排序--直接插入排序

按元素由小到大排列,直接插入排序主要過程以下:選取一個元素,從已經有序的序列的最後一個元素開始由後向前查找插入的位置,若是該元素<前面的元素則交換位置,直到該元素>=前面的元素。如對五、四、三、二、1排序過程以下:blog

一、    因爲4<5,則序列變成四、五、三、二、1,比較次數爲1次,交換次數爲1次;排序

二、    四、三、五、二、1;三、四、五、二、1,比較次數爲2次,交換次數爲2次;效率

三、    三、四、二、五、1;三、二、四、五、1;二、三、四、五、1,比較次數爲3次,交換次數爲3次;im

四、    二、三、四、一、5;二、三、一、四、5;二、一、三、四、5;一、二、三、四、5,比較次數爲4次,交換次數爲4次;img

此時也是最壞的時間複雜度爲,交換次數也是同樣;但若是給定的是一個基本有序的序列好比三、二、四、五、1,此時只須要比較7次,交換5次,比最壞狀況要好一點。最好的狀況是好比給定有序序列一、二、三、四、5,此時只需比較N-1次,交換0次。時間

直接插入排序是穩定的,就是由於由後向前查找插入的位置,好比三、三、四、五、1,第二個3不會跑到第一個3前面去。co

 

因爲直接插入排序的序列基本有序的時候會比最壞時間複雜度要好,選擇排序的時間複雜度永遠都是0(n2)也就是比選擇排序的時間複雜度好,雖然交換次數比選擇排序多,可是時間複雜度的權重比交換次數權重高,因此直接插入排序的效率會比選擇排序快點。ps

相關文章
相關標籤/搜索