template<class Record>
void bidBuddeSort(Record Array[], int n)
{
bool NoSwap = true;
int l = 0;
int r = n - 1;
int i, j;
while (l < r)
{
NoSwap = true; //标志位,如果没有交换,则排序完成退出循环
for (i = 0; i < r; i++)
{
if (Array[i]>Array[i + 1])
{
Swap(Array, i, i + 1);
NoSwap = false;
}
}// end for
if (NoSwap) break;//如果没有交换,则排序完成退出循环
l++;
for (j = r; j > l; j--)
{
if (Array[j] < Array[j - 1])
{
Swap(Array, j, j - 1);
NoSwap = false;
}
}// end for
if (NoSwap) break; //如果没有交换,则排序完成退出循环
r--;
}//end whlie
}
template<class Record>
void Swap(Record Array[], int i, int j)//交换函数
{
Record temp = Array[i];
Array[i] = Array[j];
Array[j] = temp;
}
void bidBuddeSort(Record Array[], int n)
{
bool NoSwap = true;
int l = 0;
int r = n - 1;
int i, j;
while (l < r)
{
NoSwap = true; //标志位,如果没有交换,则排序完成退出循环
for (i = 0; i < r; i++)
{
if (Array[i]>Array[i + 1])
{
Swap(Array, i, i + 1);
NoSwap = false;
}
}// end for
if (NoSwap) break;//如果没有交换,则排序完成退出循环
l++;
for (j = r; j > l; j--)
{
if (Array[j] < Array[j - 1])
{
Swap(Array, j, j - 1);
NoSwap = false;
}
}// end for
if (NoSwap) break; //如果没有交换,则排序完成退出循环
r--;
}//end whlie
}
template<class Record>
void Swap(Record Array[], int i, int j)//交换函数
{
Record temp = Array[i];
Array[i] = Array[j];
Array[j] = temp;
}