分析:冒泡排序对于长度为为n的序列,共需要做n-1次比较和不超过n-1次交换,时间复杂度为O(n²)
void BubbleSort(int a[],int n){
bool Sorted=false;//整体排序标志,先假设尚未排序
while(!Sorted){
Sorted=true;//假设已经完成排序
for(int i=1;i<n;i++){
if(a[i-1]>a[i]){
swap(a[i-1],a[i]);
Sorted=false;//整体排序不能保证,清除排序标志
}
}
n--;//一次扫描交换,末尾元素就位,需要排序的有效长度缩减
}
}//借助标志变量Sorted,可及时退出,而不总是做n-1次扫描交换