快速簡單理解 直接插入排序

2021-08-05 22:33:23 字數 1556 閱讀 3969

這是網上最常見的插入排序的**,你能看出什麼規律來嗎?

看看你得出的規律是否跟我得出的規律一樣?請往下看:

仔細看圖,我們可以得出乙個規律: 1

紅色框的元素

,是最新的乙個數,在這裡我們不妨叫它

a【i】

,(i從0到n-1),並把它放在

temp

裡。temp=a【i】

;最下面我會講講為什麼要把a【i】賦值給temp;為什麼不能直接用a【i】來比較; 2

temp元素每次都與前面的元素a【j】比較,這裡我們用j代替(j=i-i)。 3

當temp

。並且一直比較。 4

.直到temp>a【j】的時候,這個時候,a【j】不需要向後移動;這時候temp就直接插入到a【j】的後面,也就是a【j+1】。即a【j+1】=temp;

接下來我們一起來寫**吧:

這就是**實現的效果

1.接下來,我來說說為什麼不直接用a【i】來與a【j】比較;這樣不是更方便打**?看一下執行的結果:

為了能讓大家看清楚a【i】的變化,我給**加上輸出的注釋:也就是紅色的框。可以更直觀的看出它們的變化:

我們可以看到。在還沒比較之前,a【i】還是原本的數值,但是變化之後

陣列已經產生了變化,也就直接影響到了a【i】,所以比較後的a【i】已經不是原本的值;所以我們需要temp來裝原來a【i】的值;

好了,就是這樣。這樣是不是很容易理解插入排序了?

我們就可以很清楚的了解到,它的時間複雜度是o(n^2),且穩定的,空間複雜度是o(1)。

直接插入排序

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

直接插入排序

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

直接插入排序

源文章url http student.zjzk.cn course ware data structure web paixu paixu8.2.1.1.htm 做過部分修改。1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至...