C++实现的插入排序

个人理解的插入排序,原理就是数组中的某个元素,比它前一个元素要小,则交换位置,直至数组下标为0结束。实现代码如下:

template
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
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;
}



你可能感兴趣的:(C++实现的插入排序)