基于“交换”的排序︰
根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。
交换排序包括冒泡排序和快速排序。
从后往前冒,每一次排头得到当前较小值。
//交换
void swap(int &a,int &b){
int temp = a;
a = b;
b = temp;
}
//冒泡排序
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;//本趟遍历后没有发生交换,说明表已经有席t
}
}
只有 A [ j − 1 ] > A [ j ] A[j -1]>A[j] A[j−1]>A[j]时才交换,因此算法是稳定的
1.空间复杂度: O ( 1 ) O(1) O(1)
2.时间复杂度
平均时间复杂度= O ( n 2 ) O(n^2) O(n2)
顺序表、链表都可以。