改進後的直接插入排序

2021-06-07 09:54:11 字數 852 閱讀 3923

直接插入排序(straight insertion sorting)的基本思想是:把n個待排序的元素看成為乙個有序表和乙個無序表,開始時有序表中只包含乙個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第乙個元素,將它插入到有序表中的適當位置,使之成為新的有序表,重複n-1次可完成排序過程。

把a[i]插入到a[0],a[1],...,a[i-1]之中的具體實施過程為:先把a[i]賦值給變數t,然後將t依次與a[i-1],a[i-2],...進行比較,將比t大的元素右移乙個位置,直到發現某個j(0<=j<=i-1),使得a[j]<=t或j為(-1),把t賦值給a[j+1].

改進的方法

一種查詢比較操作和記錄移動操作交替地進行的方法。

具體做法:

將待插入記錄r[i]的關鍵字從右向左依次與有序區中記錄r[j](j=i-1,i-2,…,1)的關鍵字進行比較:

① 若r[j]的關鍵字大於r[i]的關鍵字,則將r[j]後移乙個位置;

②若r[j]的關鍵字小於或等於r[i]的關鍵字,則查詢過程結束,j+1即為r[i]的插入位置。

關鍵字比r[i]的關鍵字大的記錄均已後移,所以j+1的位置已經騰空,只要將r[i]直接插入此位置即可完成一趟直接插入排序。

即是從新的序列的後面開始比較,並且進行移位;

php**:

<?php

echo '';

$arr = array(90,5,3,9,2,6,10,30,0,0,0,0,0);

print_r(insertsort($arr));

function insertsort($arr)else

} }return $res;

}?>

直接插入排序 改進演算法 折半插入排序

這種改進是從比較次數入手的,並沒用減少移動的次數 include define maxsize 20 typedef int keytype typedef struct sqlist void createsqlist sqlist l l.length n void display sqlist...

直接插入排序

直接插入排序是一種最簡單的排序方法,它的基本思想是依次將每個記錄插入到乙個有序中去。就是說,第i i 1 遍整理時,a1,a2,ai 1已經是排好序的子串行 取出第i個元素ai,在已排好序的子串行為ai找到乙個合適的位置,並將它插到該位置上。易知上述排序當i 1時實際上為空操作,故可直接從i 2開始...

直接插入排序

直接插入排序的演算法思想 直接插入排序 straight insertion sort 的基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的 記錄數增 1 的有序表。根據該思想,編寫 如下 從已有序列的第0個記錄開始比較 public static void insertsort1 i...