选择排序列表与及时终止的选择排序列表
/*
功能:返回数组中最大元素的地址
参数列表:
a[]---列表
n---列表元素个数
*/
template<class T>
int indexofMax(T a[], int n)
{
int indexofmax = 0;
for (int i = 0; i < n; i++)
if (a[indexofmax] < a[i])
indexofmax = i;
return indexofmax;
}
/*
功能:选择排序,使用了indexofMax()函数
参数列表:
a[]---列表
n---列表元素个数
*/
template<class T>
void selectionSort(T a[], int n)
{
for (int i = n; i > 1; i--)
swap<T>(a[i - 1], a[indexofMax<T>(a, i)]);
}
/*
功能:及时终止的选择排序
参数列表:
a[]---列表
n---列表元素个数
*/
template<class T>
void Timely_Terminated_selectionSort(T a[], int n)
{
bool is_sorted = false;
for (int i = n; (i > 1) && (!is_sorted); i--)
{
int indexofmax = 0;
is_sorted = true;
for (int j = 0; j < i; j++)
{
if (a[indexofmax] < a[j])
indexofmax = j;//indexofmax一直变,就不会有is_sorted变为false,这样就是排序好啦
else
is_sorted = false;
}
swap(a[indexofmax], a[i-1]);
}
}