template<type name T>
int bubblesort(T array[], int n)
{
bool exchange = false; //是否发生交换
int i, j; //用于遍历子表的下标
T temp; //用于交换元素的临时变量
//开始遍历过程,以下标j构成子表,共有n-1个子表:
for ( j = n - 1; j >= 0; j-- )
{
exchange = false;
for ( i = 0; i < j; i++ )
{
if ( array[i] > array[i + 1])
{
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
exchange = true;
}
}
if (!exchange) //如果在一次遍历中没有发生交换,则表示已经排序好,中断遍历过程
return n - j - 1;
}
return n - 1 - j;
}
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论