代码如下:
#include <iostream>
using namespace std;
void swap(int *a,int *b);
void bubbleSort(int *arr,int size);
int main(){
int arr[]={1,3,0,4,7,2,5,6};
int size=sizeof(arr)/sizeof(arr[0]);
for(int i=0;i<size;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
bubbleSort(arr,size);
for(int j=0;j<size;j++){
cout<<arr[j]<<" ";
}
system("pause");
return 0;
}
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void bubbleSort(int *arr,int size){
int a,b;
for(b=0;b<size-1;b++){ //一开始没想到这一步,后来
//明白每轮交换次数一样也能实现
for(a=0;a<size-1;a++){
if(arr[a]>arr[a+1])
swap(arr[a],arr[a+1]);
}
}
}
其实这个冒泡排序的方法不是最简的,明面上已经是放在最后的数应该是最大的了,可以不用判断,但是我这个代码依然浪费内存判断了的。
按照我这种方法,冒泡排序也需要2轮的判断,也就是冒泡函数需要2个for循环,相对于选择排序其实代码要简单一点。