怎么通過微博做網(wǎng)站外鏈百度seo外包
原理:從左到右一次比較,如果左側(cè)數(shù)字比右側(cè)數(shù)字大(小),則兩數(shù)交換,否則比較下一? ? ? ? ? ? ?組數(shù)字,每一次大循環(huán)比較可以將亂序的最右側(cè)數(shù)字改為最大(最小),每一次小循環(huán)的比? ? ? ? ? ? ?較次數(shù)相對于前一次要減一
動(dòng)態(tài)用例:
升序排序代碼詳解:
void bubble_sort (int arr[],int sz) //將數(shù)組和元素個(gè)數(shù)傳過來
{for(int i=0;i<sz-1;i++) //每次大循環(huán)可以確定亂序最后一個(gè)數(shù)字,最多需要sz-1次循環(huán){int tmp=0;for(int j=0;j<sz-1-i;j++)//每次小循環(huán),因?yàn)橐呀?jīng)確定最后的i個(gè)元素,剩下需要比較的元素個(gè)數(shù)就為sz-i,而需要比較的次數(shù)就為sz-1-i{if(arr[j]>arr[j+1])//相鄰兩個(gè)數(shù)比較,如過前一個(gè)數(shù)比后一個(gè)數(shù)大就交換{
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
tmp=1;}}
if(tmp==0)
break;}
}
降序排序代碼詳解:
void bubble_sort (int arr[],int sz) //將數(shù)組和元素個(gè)數(shù)傳過來
{for(int i=0;i<sz-1;i++) //每次大循環(huán)可以確定亂序最后一個(gè)數(shù)字,最多需要sz-1次循環(huán){int tmp=0;for(int j=0;j<sz-1-i;j++)//每次小循環(huán),因?yàn)橐呀?jīng)確定最后的i個(gè)元素,剩下需要比較的元素個(gè)數(shù)就為sz-i,而需要比較的次數(shù)就為sz-1-i{if(arr[j]<arr[j+1])//相鄰兩個(gè)數(shù)比較,如過前一個(gè)數(shù)比后一個(gè)數(shù)小就交換{
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
tmp=1;}}
if(tmp==0)
break;}
}
兩者排序方式唯一的區(qū)別:
1.升序排序:如果前一個(gè)數(shù)比后一個(gè)數(shù)大,二者就交換,所以用>
2.降序排序:如果前一個(gè)數(shù)比后一個(gè)數(shù)大,二者就交換,所以用<
tmp的作用:
每一次大循環(huán),我們都將tmp設(shè)置為0,在每一次小循環(huán)里面,如果兩個(gè)數(shù)進(jìn)行了交換,我們就將tmp改為1,出這次大循環(huán)判斷一下tmp是否為0,如果為0,那么本次循環(huán)沒有進(jìn)行交換,也就是數(shù)組已經(jīng)排好序,直接退出大循環(huán),否則繼續(xù)進(jìn)行循環(huán)。