1.冒泡排序原理
冒泡排序很简单,我们假设数据集合为:3,2,5,8,4,7,6,9;排序规则为升序
我们从3开始与2,5,8,4,7,6,9依次比较,我们比较一趟:
1.3>2(交换)-->2,3,5,8,4,7,6,9
2.3<5(不交换)-->2,3,5,8,4,7,6,9
3.5<8(不交换)-->2,3,5,8,4,7,6,9
4.8>4(交换)-->2,3,5,4,8,7,6,9
5.8>7(交换)-->2,3,5,4,7,8,6,9
6.8>6(交换)-->2,3,5,4,7,6,8,9
7.8<9(不交换)-->2,3,5,4,7,6,8,9
由此可见:我们每遍历一次都可以把一个大的数字排在最后(相对来说),我们每遍历一次排一个数字,所以要嵌套循环,故时间复杂度为O(N^2),没有借助辅助空间->空间复杂度为O(1)
2.代码实现
void BubbleSort(int* arr,int size){
int i;
int j;
for(i=0;i<size;i++){
for(j=i;j<size-1-i;j++){
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
舍友太卷了!!