在冒泡排序的程序中,按升序排列使用了改进的冒泡排序算法,是得最好情况下时间复杂度为O(n),降序排列部分使用的是最基础冒泡排序
template
<
class
T
>
void bubble_sort(T * Array, int Size, bool Ascending = true )
{
assert(Array != NULL);
assert(Size >= 2);
int i, j, k = Size;
if (Ascending)
{
for (i = 1; i < Size; i = k)
for (j = 0; j < Size-i; j++)
if (Array[j] > Array[j+1])
{
swap(&Array[j], &Array[j+1]);
k = Size - j;
}
}
else
{
for (i = 1; i < Size; i++)
for (j = 0; j < Size-i; j++)
if (Array[j] < Array[j+1])
swap(&Array[j], &Array[j+1]);
}
}
void bubble_sort(T * Array, int Size, bool Ascending = true )
{
assert(Array != NULL);
assert(Size >= 2);
int i, j, k = Size;
if (Ascending)
{
for (i = 1; i < Size; i = k)
for (j = 0; j < Size-i; j++)
if (Array[j] > Array[j+1])
{
swap(&Array[j], &Array[j+1]);
k = Size - j;
}
}
else
{
for (i = 1; i < Size; i++)
for (j = 0; j < Size-i; j++)
if (Array[j] < Array[j+1])
swap(&Array[j], &Array[j+1]);
}
}