基本思想:每次上浮最小的(或者下浮最大的) 知道某次冒泡没有任何改动 停止排序
复杂度: n^2
稳定排序
算法要点:
1. 设置哨兵
2. 每次外层循环次数减一
算法实现
void BubbleSort(int arr[], int len)
{
bool bChanged = true;
while(len && bChanged)
{
bChanged = false;
for(int j=0; j<len-1; j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
bChanged = true;
}
}
len--;
}
}
int main()
{
int arr[]={3,7,5,1,9};
BubbleSort(arr,5);
for(int i=0; i<5; i++)
{
cout << arr[i] << ' ';
}
cout<<endl;
}