文章目录原理图算法步骤实现优化应用场景原理图算法步骤原则邻居俩俩比大的往后换。要进行n-1回合每【回合】 进行 (n-回合)[次]比较例源数据 [3, 7, 2, 1]n为4元素数量加粗代表本回合本次比较过后的结果。【第一回合】[n-1次比较][3, 7, 2, 1][3,2, 7, 1][3, 2,1, 7]【第二回合】[n-2次比较][2, 3, 1, 7][2,1, 3, 7]【第三回合】[n-3次比较][1, 2, 3, 7]比较交换完毕最终升序结果为[1, 2, 3, 7]实现#includeiostreamusingnamespacestd;voidbubbleSort(intarr[],intn){// 外层n-1回合每回合需要将一个最大的放到正确的位置for(inti0;in-1;i){//内层n-1-i次减i是因为随着回合的增加排好的数量也在逐渐递增排好的不用再排所以减去for(intj0;jn-1-i;j){if(arr[j]arr[j1]){// 前比后大就需要交换inttempPrearr[j];arr[j]arr[j1]arr[j1]tempPre;}}}}intmain(){intarr[]{3,7,2,1};intnsizeof(arr)/sizeof(arr[0]);bubbleSort(arr,n);for(inti0;in;i){coutarr[i] ;}return0;}优化voidbubbleSortBetter(intarr[],intn){for(inti0;in-1;i){boolswappedfalse;// 标记这一轮有没有交换for(intj0;jn-1-i;j){if(arr[j]arr[j1]){swap(arr[j],arr[j1]);// C 自带交换函数swappedtrue;}}if(!swapped)break;// 没交换已经有序提前下班}}应用场景教学场景小数据量/小内存传感器、单片机数据基本有序了比如实时接收的数据流偶尔有一两个错位冒泡加上“提前结束”的优化后跑得飞快几乎扫一遍就完事。不适合的场景数据量上到几千几万 → 太慢用快速排序数据范围很小且是整数 → 用计数排序闪电快对性能有要求 → 用标准库的 sort()别自己造轮子