个人理解的插入排序,原理就是数组中的某个元素,比它前一个元素要小,则交换位置,直至数组下标为0结束。实现代码如下:
template<typename T>
void insertSort(T arr[], int n)
{
for (int i = 1; i < n; ++i)
{
for (int j = i; j > 0; --j)
{
if (arr[j] < arr[j-1])
{
swap(arr[j], arr[j-1]);
}
else
{
break;
}
}
}
return;
}
优化:
template<typename T>
void insertionSort(T arr[], int n)
{
for( int i = 1 ; i < n ; i ++ )
{
T e = arr[i];
int j; // j保存元素e应该插入的位置
for (j = i; j > 0 && arr[j-1] > e; j--)
arr[j] = arr[j-1];
arr[j] = e;
}
return;
}