这里有两个,其中一个是模板的实现。

#include <iostream>

#include <stdlib.h>

#include <algorithm>

#include <set>

#define LEN 20

//Insert sort

template<typename TData>
void sort_Insert(TData *array, int n)
{
     for(int i = 1; i < n; ++i)
     {
         for(int j = i; j >= 1; --j)
         {
             if (array[j] < array[j - 1])
                 std::swap(array[j], array[j - 1]);
             else
                 break;
         }
     }
}

template<typename TData>
void sort_Insert2(TData *array, int n)
{
     for(int i = 1; i < n; ++i)
     {
         int j = i;
         TData tmp = array[j];
         while (tmp < array[j - 1] && j >= 0)
         {
             array[j] = array[j - 1];
             --j;
         }
         array[j] = tmp;
     }
}

int main()
{
     int array[LEN];
     for(int i = 0; i < LEN; ++i)
         array[i] = rand() % LEN;
     std::cout << "Before sort:\t";
     for(int i = 0; i < LEN; ++i)
         std::cout << array[i] << " ";
     std::cout << "\n";
     sort_Insert(array, LEN);
     //sort_Insert2(array, LEN);

     std::cout << "After sort:\t";
     for(int i = 0; i < LEN; ++i)
         std::cout << array[i] << " ";
     std::cout << "\n";
}

[原文在百度空间已经关闭]