时间复杂度为 n*n,是一个稳定的排序算法,C++实现代码如下(是经过优化的,不用每一趟中每次比较都交换一下数组): #include <iostream> using namespace std; int BubbleSort(int *arr,int size); int main() { int arr[] = {4,3,2,1}; BubbleSort(arr,4); for(int a=0 ; a<4 ; a++) //遍历输出排序好的数组 { cout<<arr[a]; } return 0; } //当传入的实参是地址类型时(如对象,数组等,结构体等,基本数据类型不算,用指针,其他用引用,这样传递的参数才是他自己,而不是拷贝) int swap(int &a,int &b) { int temp=a; a=b; b=temp; return 0; } int BubbleSort(int *arr,int size) { for(int i=0;i<size;i++) { int maxindex=0; //每次比较,保存较大那个值的索引 for(int j=0;j<size-i-1;j++) { if(arr[j]>arr[maxindex+1]) //关键!!!每次和最大的那个下标的值比,大的话,就记录下J { maxindex=j; } } if(maxindex==0) //如果有一趟没有交换(即最大的那个位置一直再第一个没变),意味着已经有序了,无须再排 break; else { swap(arr[maxindex],arr[size-1-i]); } } return 0; } 输出结果:4321Press any key to continue