重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。
1.1 算法描述
- 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
- 每次排完,最后的元素应该会是最大的数;
- 总共比较数组长度-1次。
1.2 动画演示
1.3代码实现
//无函数实现
#include<iostream>
using namespace std;
int main(){
int arr[10] = {1,2,4,6,7,4,2,8,5,3};
for(int i = 0 ; i < 9 ; i ++){ //总共要比较的次数,一共是9次
for(int j = 0 ; j < 10-1-i ; j++){ //每一次要比较的次数
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp ;
}
}
}
for(int c = 0 ; c < 10 ; c++){ //循环打印
cout<<arr[c]<<"\t";
}
return 0 ;
}
//函数实现
#include<iostream>
using namespace std;
void bubbleSort(int *arr , int len){
for(int i = 0 ; i < len-1 ; i ++){ //总共要比较的次数,一共是9次
for(int j = 0 ; j < len-1-i ; j++){ //每一次要比较的次数
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp ;
}
}
}
}
void printarr(int arr[]){
for(int i = 0 ; i < 10 ;i++){
cout<<arr[i]<<"\t";
}
}
int main(){
int arr[10] = {1,2,4,6,7,4,2,8,5,3};
bubbleSort( arr , 10);
printarr(arr);
return 0 ;
}