--InsertSort类模板:
#ifndef INSERTSORT_H
#define INSERTSORT_H
#include <vector>
#include <iostream>
using namespace std;
template<typename T>
class InsertSort
{
public:
InsertSort(vector<T> _List,int _len);
void Sort();
void Output();
private:
int m_iLen;
vector<T> m_List;
};
#endif
template<typename T>
inline InsertSort<T>::InsertSort(vector<T> _List, int _len)
{
for (int i = 0; i < _len; i++)
m_List.push_back(_List[i]);
m_iLen = _len;
}
template<typename T>
inline void InsertSort<T>::Sort()
{
for (int i = 1; i < m_iLen; i++)
{
if (m_List[i] < m_List[i - 1])
{
T temp = m_List[i];
int j = i - 1;
m_List[i] = m_List[i - 1];
while (j >= 0 && temp < m_List[j])
{
m_List[j + 1] = m_List[j];
j--;
}
m_List[j + 1] = temp;
}
}
}
template<typename T>
inline void InsertSort<T>::Output()
{
for (int i = 0; i < m_iLen; i++)
{
cout << m_List[i] << " ";
if ((i+1) % 10 == 0)
cout << endl;
}
cout << endl;
}
--测试主程序:
#include "InsertSort.h"
const int Len = 10;
int a[Len] = { 16,48,9,2,94,16,48,45,545,45 };
int main()
{
vector<int> testdata;
for (int i = 0; i < Len; i++)
{
testdata.push_back(a[i]);
}
InsertSort<int> test(testdata, Len);
test.Sort();
test.Output();
system("pause");
return 0;
}