冒泡排序中的交换次数又称为反序数或逆序数,可用于体现数列的错乱程度
冒泡排序仅对数组中相邻元素进行比较和排序,让数组元素像水中的气泡一样逐渐上浮,进而达到排序的目的,复杂度数量级为O(N²)。
下面的代码实例实现数组的升序排列。
#include<iostream>
#include<algorithm>
using namespace std;
int bubblesort{int a[],int n}{
int s=0;
bool flag=1;
for(i=0;flag;i++){
flag=0;
for(int j=n-1;j>=i+1;j--){
if(a[j]<a[j-1]){
swap(a[j],a[j-1]);
flag=1;
s++;
}
}
}
return s;}
其中i表示为排序部分的开头元素,从数组开头向末尾移动。
j从数组的末尾开始,减少到i+1结束,逐一对相邻元素比较排序。
其中加入了bool变量flag避免了排序好的部分在进行冒泡排序,一定程度上减少了时间复杂度。