每趟排序都是把值最小的数移至前面,依次排序。
- 空间复杂度O(1)
最好情况下,初始序列为”正序“序列,只需一趟排序,n-1次比较,且不移动记录,时间复杂度为O(n)。
最坏情况下,初始序列为逆序,则需要进行n-1趟排序,需要进行(n(n-1))/2次比较,并做等数量的记录移动,时间复杂度O(n2)。
void BubbleSort(int A[], int n){
for(int i=0; i<n-1; i++){
bool flag = false;
for(int j=n-1; j>i; j--){ //换数不换下标
if(A[j-1]>A[j]){
swap(A[j-1],A[j]); //交换位置
flag = true;
}
}
if(flag == false)
return;
}
}
void swap(int a; int b){
int temp = a;
a = b;
b = temp;
}