温州个人建站模板,网站建设问题,平面广告设计培训,share群组链接分享原理#xff1a;从左到右一次比较#xff0c;如果左侧数字比右侧数字大#xff08;小#xff09;#xff0c;则两数交换#xff0c;否则比较下一 组数字#xff0c;每一次大循环比较可以将乱序的最右侧数字改为最大#xff08;最小#xff09;#xff0c… 原理从左到右一次比较如果左侧数字比右侧数字大小则两数交换否则比较下一 组数字每一次大循环比较可以将乱序的最右侧数字改为最大最小每一次小循环的比 较次数相对于前一次要减一 动态用例 升序排序代码详解
void bubble_sort (int arr[],int sz) //将数组和元素个数传过来
{for(int i0;isz-1;i) //每次大循环可以确定乱序最后一个数字最多需要sz-1次循环{int tmp0;for(int j0;jsz-1-i;j)//每次小循环因为已经确定最后的i个元素剩下需要比较的元素个数就为sz-i而需要比较的次数就为sz-1-i{if(arr[j]arr[j1])//相邻两个数比较如过前一个数比后一个数大就交换{
int tarr[j];
arr[j]arr[j1];
arr[j1]t;
tmp1;}}
if(tmp0)
break;}
} 降序排序代码详解
void bubble_sort (int arr[],int sz) //将数组和元素个数传过来
{for(int i0;isz-1;i) //每次大循环可以确定乱序最后一个数字最多需要sz-1次循环{int tmp0;for(int j0;jsz-1-i;j)//每次小循环因为已经确定最后的i个元素剩下需要比较的元素个数就为sz-i而需要比较的次数就为sz-1-i{if(arr[j]arr[j1])//相邻两个数比较如过前一个数比后一个数小就交换{
int tarr[j];
arr[j]arr[j1];
arr[j1]t;
tmp1;}}
if(tmp0)
break;}
} 两者排序方式唯一的区别 1.升序排序如果前一个数比后一个数大二者就交换所以用 2.降序排序如果前一个数比后一个数大二者就交换所以用 tmp的作用 每一次大循环我们都将tmp设置为0在每一次小循环里面如果两个数进行了交换我们就将tmp改为1出这次大循环判断一下tmp是否为0如果为0那么本次循环没有进行交换也就是数组已经排好序直接退出大循环否则继续进行循环。