1. 程式人生 > >內排序之插入排序

內排序之插入排序

內排序之插入排序

插入排序即每次從陣列內拿出一個數與陣列前面的數進行比較,若比前面的數小prior函式返回true,進行執行swap函式,直至前面的數比它大為止!
插入排序的時間複雜度為O(n^2)
需要進行O(n^2)次交換


template<typename E> bool prior(E a, E b)//判斷兩個數的大小
{
	if (a < b)
		return true;
	else return false;
}

template<typename E> inline void swap(E A[], int i, int j)//交換兩個位置上的資料
{
	E temp = A[i];
	A[i] = A[j];
	A[j] = temp;
}
template<typename E> void inssort(E A[], int n)//插入排序
{
	for (int i = 1; i < n; i++)
		for (int j = i; (j > 0) && prior(A[j], A[j - 1]); j--)
			swap(A, j, j - 1);
}