一、简单版
#include <iostream>
using namespace std;
void swap(int *const p,int * const q);
void maopao(int a[],int len);
void printArr(int a[],int len);
int main()
{
int a[] = {8,5,4,3,1};
int len = sizeof(a)/ sizeof(int);
// printf("len = %d\n",len);
printf("排序前:");
printArr(a,len);
maopao(a,len);
printf("排序后:");
printArr(a,len);
return 0;
}
void maopao(int a[], int len) {
for(int i = 0;i <len;i++){
for(int j = 0;j <len-i-1;j++){
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
}
}
void printArr(int a[], int len) {
for(int i = 0;i< len; i++){
cout << a[i] << " ";
}
cout <<endl;
}
void swap(int *const p,int * const q){
int temp = *p;
*p = *q;
*q = temp;
}
二、优化版
#include <iostream>
using namespace std;
// swap交换
void swap(int *const a,int *const b){
int temp = *a;
*a = *b;
*b = temp;
}
// BuddleSort
void BuddleSort(int arr[],int len){
int border = len - 1;
int LastChangeIndex = 0;
for(int i = 0; i < len ; i++){
int sortFlag = 1;
for(int j = 0; j < border; j++){
if(arr[j]>arr[j+1]){
swap(arr[j],arr[j+1]);
sortFlag = 0;
LastChangeIndex = j;
}
}
border = LastChangeIndex;
if(sortFlag)
break;
}
}
// 打印
void printArr(int a[], int len) {
for(int i = 0;i< len; i++){
cout << a[i] << " ";
}
cout <<endl;
}
int main() {
int arr[] ={4,7,3,5,6,2,8,1};
int len = sizeof(arr)/sizeof(int);
cout << "排序前:";printArr(arr,len);
BuddleSort(arr,len);
cout << "排序后:";printArr(arr,len);
}