基本思想
把待排序的值按其值的大小逐個插入到乙個已經排好序的有序序列中,直到所有的值插入完為止,最後得到乙個有序序列。
**實現
public
class
insertsort ;
insertsort(arr);
for (int i = 0; i < arr.length; i++)
}/**
* 插入排序
*/public
static
int insertsort(int arr)
int i, j, temp;
for (i = 1; i < arr.length; i++)
//通過j--把插入的值放到指定位置
arr[j + 1] = temp;
}return arr;
}}
演算法複雜度
採用插入排序存在最好情況和最壞情況,最好情況就是,序列已經是公升序排列了,每插入乙個元素,只需要考查前乙個元素,需要進行的比較操作需(n-1)次即可,即插入排序的時間複雜度為o(n);
最壞情況就是,序列是降序排列,那麼此時需要進行的比較共有n(n-1)/2次,即插入排序演算法的時間複雜度為o(n^2)。
因而,插入排序不適合對於資料量比較大的排序應用。但是,如果需要排序的資料量很小,例如,量級小於千,那麼插入排序還是乙個不錯的選擇。
排序演算法穩定性
插入元素是把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,所以插入排序是穩定的。
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...
排序演算法之插入排序
本節主要分析插入排序演算法的直接插入排序和希爾 shell 排序 又稱縮小增量排序 1.直接插入排序 該排序是最簡單的排序方法,其基本思想是 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1....