冒泡排序(Bubble Sort):
- 是一种最简单的交换排序方法,它通过两两比较相邻的关键字,如果逆序,则进行交换,从而使关键字小(或者大)的记录如气泡一般逐渐往上“漂浮”(左移)。
- 示例图:
- 代码示例(c++版):
#include<iostream>
using namespace std;
int main(){
//初始数组
int data[] = {49,38,65,97,76,13,27,49};
int i = 8,j = 0;
for(;0<i; i--){
//判断是否交换,如果未交换,退出循环
bool flag = false;
for(j=0; j<i-1; j++){
//如果逆序则交换
if(data[j+1] < data[j]){
int temp;
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
flag = true;
}
}
if(!flag){
break;
}
}
for(i=0; i<8; i++){
cout<<data[i]<<" ";
}
return 0;
}
Output:13 27 38 49 49 65 76 97
- (1)时间复杂度:O(n^2)
最好情况(初始序列为正序):只需要进行一趟排序,在排序过程中进行n-1次关键字的比较,记录不移动。
最坏情况(初始序列为逆序):需要进行n-1趟排序,比较次数为
时间复杂度为O(n^2)
- (2)空间复杂度:只有在交换位置的时候需要一个辅助空间,空间复杂度为O(1)