正常的冒泡排序法:
/************************************************************************/
/* 冒泡排序 */
/************************************************************************/
void BubbleSort(int array[],int n){
for (int i = 0; i < n-1;++i)
{
for (int j = n - 1; j>i;j--)
{
if (array[j]<array[j-1]) //小于的往上面冒泡
{
swap(array, j, j - 1);
}
}
}
}
优化后的冒泡排序法:
//冒泡排序法改进版本:当没有进行交换说明已经排好序了,跳出循环
void BubbleSort_Advanced(int array[], int n){
bool status = true;
int i = 0;
while (status)
{
status = false;
for (int j = n - 1; j > i; j--)
{
if (array[j] < array[j - 1]) //小于的往上面冒泡
{
swap(array, j, j - 1);
status = true;
}
}
i++;
}
}
/************************************************************************/
/*交换函数,交换数组中两个元素的位置 */
/************************************************************************/
void swap(int array[], int i, int j){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
时间复杂度:O(n^2),辅助空间:O(1),稳定