【演算法題】雙向氣泡排序
阿新 • • 發佈:2019-01-02
void func(int* array,int len)
{
if (array == NULL || len<=1)
{
return;
}
int left = -1;
int right = len;
while (left<right)
{
left++;
right--;
bool swapped = false;
for (auto j = left; j < right;j++)
{
if (array[j]>array[j+1])
{
std::swap(array[j], array[j + 1]);
swapped = true;
}
}
if (!swapped)
{
return;
}
swapped = false;
for (auto j = right; j > left;--j)
{
if (array[j]<array[j-1])
{
std::swap(array[j],array[j-1]);
swapped = true;
}
}
if (!swapped)
{
return;
}
}
}