演算法專欄
很多人演算法和資料結構不好,歸根結底就是基礎不紮實,演算法和資料結構不好的話,達到的高度肯定不會很高,最近重新加強了一下自己的演算法基礎,決定從最基礎的內容開始,如有不足的地方,歡迎指正。
排序方法可以分為五種∶插入排序、選擇排序、交換排序、分配排序和歸併排序。
在排序過程中,全部記錄存放在記憶體,則稱為內排序,如果排序過程中需要使用外存,則稱為外排序。
首先來看一下八種排序之間的關係圖
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...