您的位置:首页 > 编程语言 > C语言/C++

c++之排序(template)

2014-08-06 20:53 120 查看
#include <iostream>

using namespace std;

template<class T>

int Max(T& a,int n)

{

//取得数组最大元素的位置

int position = 0;

for(int i = 0; i < n; ++i)

{

if (a[position] < a[i])

{

position = i;

}

}

return position;

}

template<class T>

void Swap(T& a,T& b)//普通变量必须用引用或者指针,数组可以随便

{

T temp = a;

a = b;

b = temp;

}

template<class T>

void SelectSort(T& a,int n)

{

for (int i = n; i > 0; --i)

{

//对数组a [ 0 : n-1 ]中的n个元素进行排序

int position = Max(a,i);

Swap(a[position],a[i-1]);

}

}

template<class T>

void Print(T& a,int n)

{

for (int i = 0; i < n; ++i)

{

cout << a[i];

cout << " ";

}

}

template <class T>

int getArrayLen(T& array)

{

return (sizeof(array) / sizeof(array[0]));

}

template <class T>

void Bubble (T a[], int n)

{

//把数组a [ 0 : n-1 ]中最大的元素通过冒泡移到右边

for ( int i = 0; i < n-1; i++)

{

if( a[i] > a[i +1])

Swap(a[i], a[i+1]) ;

}

}

template <class T>

void BubbleSort (T a[], int n)

{

//对数组a [ 0 : n-1 ]中的n个元素进行冒泡排序

for (int i = n; i>1; --i)

{

Bubble(a,i);

}

}

template<class T>

void Insert(T a[],int n, int x)

{

int i;

for(i = n-1; i >= 0 && x < a[i]; --i)

{

a[i+1] = a[i];

}

a[i+1] = x;

}

template<class T>

void InsertSort(T a[], int n)

{

for(int i =1; i < n; ++i)

{

T x = a[i];

Insert(a,i,x);

}

}

int main()

{

int a[] = {2,22,13,14,6,7,78,46,1,0};

int length = getArrayLen(a);

SelectSort(a,length);//选择排序

Print(a,length);

cout << endl;

BubbleSort(a,length);//冒泡排序

Print(a,length);

cout << endl;

InsertSort(a,length);//插入排序

Print(a,length);

system("PAUSE");

return 0;

}

练习c++,more exercise,more good!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: