必須掌握的八種排序(1 2) 插入排序,希爾排序

2021-07-11 17:39:29 字數 1411 閱讀 7301

演算法專欄

很多人演算法和資料結構不好,歸根結底就是基礎不紮實,演算法和資料結構不好的話,達到的高度肯定不會很高,最近重新加強了一下自己的演算法基礎,決定從最基礎的內容開始,如有不足的地方,歡迎指正。

排序方法可以分為五種∶插入排序、選擇排序、交換排序、分配排序和歸併排序。 

在排序過程中,全部記錄存放在記憶體,則稱為內排序,如果排序過程中需要使用外存,則稱為外排序。 

首先來看一下八種排序之間的關係圖

1、 直接插入排序

(1)基本思想:在要排序的一組數中,假設前面(n-1) [n>=2] 個數已經是排

好順序的,現在要把第n個數插到前面的有序數中,使得這n個數

也是排好順序的。如此反覆迴圈,直到全部排好順序。

(2)理解圖: 

已知待序的一組記錄的初始排列為:21, 25, 49, 25*, 16, 08

開始排序 

(3)**實現

//插入排序演算法

public

static

void

insertsort(int a)

//將當前的值放到合適的位置

a[j]=temp;}}

直接插入排序最大的優點是簡單,在記錄數較少時,是比較好的辦法。

2、希爾排序(最小增量排序)

(1)基本思想:演算法先將要排序的一組數按某個增量d(n/2,n為要排序數的個數)分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序,然後再用乙個較小的增量(d/2)對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序後,排序完成。

(2)理解圖

(3)**實現

public

void

shellsort(int a)

a[j + d] = temp;}}

if (d == 1)

}for (int i = 0; i < a.length; i++)

system.out.print(a[i] + "\t");

}

必須掌握的八種排序(1 2) 插入排序,希爾排序

很多人演算法和資料結構不好,歸根結底就是基礎不紮實,演算法和資料結構不好的話,達到的高度肯定不會很高,最近重新加強了一下自己的演算法基礎,決定從最基礎的內容開始,如有不足的地方,歡迎指正。排序方法可以分為五種 插入排序 選擇排序 交換排序 分配排序和歸併排序。在排序過程中,全部記錄存放在記憶體,則稱...

必須掌握的八種排序(1 2) 插入排序,希爾排序

很多人演算法和資料結構不好,歸根結底就是基礎不紮實,演算法和資料結構不好的話,達到的高度肯定不會很高,最近重新加強了一下自己的演算法基礎,決定從最基礎的內容開始,如有不足的地方,歡迎指正。排序方法可以分為五種 插入排序 選擇排序 交換排序 分配排序和歸併排序。在排序過程中,全部記錄存放在記憶體,則稱...

1 2插入排序 折半插入排序

1.2插入排序 折半插入排序 binary insertion sort 一.評估 穩定的排序演算法 時間複雜度o n 2 移動次數 最小值n 1,最大值 n 2 n 1 2,平均值 n 2 4。與直接插入相比較少了比較的次數。二.思想 逐一插入,折半比較。r 0 作用 哨兵 監視哨 暫存器。voi...