演算法----插入排序(insert sort)
插入排序就是每次選取一個元素插入到已經排序的子陣列中,如此迴圈,直到所有的元素都完成排序。
演算法實現:
void sort::insert_sort(int* a, const int n)
{
for(int i=1; i<n; i++)
{
for(int j=i; j>0 && a[j] < a[j-1]; j--)
{
swap(a,j,j-1);
}
}
}
上述演算法的時間複雜度為O(N^2)。但是插入排序的演算法效能與待排序的陣列有關,當陣列已排序,則可線上性時間內完成,如果陣列為逆序,則需要O(N^2)的時間才能完成排序。因此插入排序演算法的時間複雜度在N~N^2之間。當陣列規模較小或者存在多個區域性有序的子陣列時,演算法的執行速度會更快。