冒泡排序的原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中大的一個或最小的一個。這個數(shù)就會從序列的最右邊冒出來。
成都創(chuàng)新互聯(lián)公司為客戶提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項目涵蓋了網(wǎng)頁設(shè)計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、成都做手機網(wǎng)站等網(wǎng)站方面業(yè)務(wù)。
以從小到大排序為例,第一輪比較后,所有數(shù)中大的那個數(shù)就會浮到最右邊;第二輪比較后,所有數(shù)中第二大的那個數(shù)就會浮到倒數(shù)第二個位置……就這樣一輪一輪地比較,最后實現(xiàn)從小到大排序。
代碼如下?
#includevoid Bubble_sort(int arr[], int size)
{
int j,i,tem;
for (i = 0; i< size-1;i ++)//size-1是因為不用與自己比較,所以比的數(shù)就少一個
{
int count = 0;
for (j = 0; j< size-1 - i; j++) //size-1-i是因為每一趟就會少一個數(shù)比較
{
if (arr[j] >arr[j+1])//這是升序排法,前一個數(shù)和后一個數(shù)比較,如果前數(shù)大則與后一個數(shù)換位置
{
tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
count = 1;
}
}
if (count == 0) //如果某一趟沒有交換位置,則說明已經(jīng)排好序,直接退出循環(huán)
break;
}
}
int main()
{
int arr[10];
int i;
printf("請輸入10個數(shù)\n");
for (i = 0; i< 10; i++) //接收用戶的數(shù)值
{
scanf("%d", &arr[i]);
}
printf("排序前的數(shù)組>");
for (i = 0; i< 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n排序后的數(shù)組>");
Bubble_sort(arr, 10);
for (i = 0; i< 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
值得注意的是函數(shù)中的定義的count是為了檢驗是否進行了元素的交換,是對代碼的一種優(yōu)化
運行結(jié)果>
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧