既然要用外行的話來回答,我就打個簡單的比喻吧。
公司主營業(yè)務:成都網站制作、網站設計、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出城東免費做網站回饋大家。
【比喻】
假如你是體育老師,你前面有一排隨機站立的學生,10個,高矮不一。如果你要用冒泡排序的思路來讓他們從低到高來排隊,你可以這樣。
第一遍:
從左往右,第一個跟第二個比較,高的那么換到右邊,接著第2個跟第3個比較,高的再換到右邊。這樣以此類推,第一遍做完后,你能保證最高的那個被移動到了隊列最后。比如說姚*明同學。
第二遍:
如果我是體育老師,姚*明可以去玩手機了(呵呵),因為,第一輪已經能保證他是最高的,且已經站到最后了。那么我只要對前9位同學,把第一遍的動作再做一遍,那么你就可以保證找出第2高的同學,移動到姚*明左邊了。一次類推。
【短評】
所謂冒泡,就是模擬池塘里的小氣泡。你可以假定小的往上跑的快,大的跑的慢。那么水底到水面上就形成了一串大小不同的泡泡。
【截圖注釋】
bubble_sort(A)//函數名叫冒泡排序,需要傳入一個數組A作為參數
{
for(
i=1
to
N-1)//10個人,其實排9輪就好了,最后一輪就一個人不用排
{
haschang=false;//用一個邏輯性變量記錄排序過程中是否有數據交換,開始為false
for(j=1
to
N-i)//每一輪要排序的人數是遞減的,
i是遞增,所以每一次內循環(huán)N-i遞減
{
if(A[j]A[j+1])//如果A的第j個元素比后面那個大,就交換位置
{
temp=A[j];//先把A[j]做個備份
A[j]=A[j+1];//然后把A[j+1]裝到A[j]中
A[j+1]=temp;//最后把原來備份的temp
放到A[j+1]
實現(xiàn)交換
haschange=true;//發(fā)生了數據交換,修改標識。
}
}
}
樓主好運。
#includestdio.h
voidmain()
{
inta[10];
inti,j,t;
printf("input10numbers:\n");
for(i=0;i10;i++)
scanf("%d",a[i]);
for(j=0;j9;j++)/*進行9次循環(huán)實現(xiàn)9趟比較*/
for(i=0;i9-j;i++)/*在每一趟中進行9-j次比較*/
if(a[i]a[i+1])/*相鄰兩個數比較,想降序只要改成a[i]a[i+1]*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("thesortednumbers:\n");
for(i=0;i10;i++)
printf("%d",a[i]);
}
擴展資料:
冒泡排序算法的運作
1、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。這步做完后,最后的元素會是最大(小)的數。
3、針對所有的元素重復以上的步驟,除了最后已經選出的元素(有序)。
4、持續(xù)每次對越來越少的元素(無序元素)重復上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。
簡單的表示
#includestdio.h
voidswap(int*i,int*j)
{
inttemp=*i;
*i=*j;
*j=temp;
}
intmain()
{
inta[10]={2,1,4,5,6,9,7,8,7,7};
inti,j;
for(i=0;i10;i++)
{
for(j=9;ji;j--)//從后往前冒泡
{
if(a[j]a[j-1])
{
swap(a[j],a[j-1]);
}
}
}
for(i=0;i10;i++)
{
printf("%d\n",a[i]);
}
return0;
}
參考資料來源:冒泡排序-百度百科
C語言冒泡排序法的排序規(guī)則:將被排序的記錄數組R[1..n]垂直排列,每個記錄R看作是重量為R.key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃描數組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反復進行,直到最后任何兩個氣泡都是輕者在上,重者在下為止。初始 R[1..n]為無序區(qū)。第一趟掃描 從無序區(qū)底部向上依次比較相鄰的兩個氣泡的重量,若發(fā)現(xiàn)輕者在下、重者在上,則交換二者的位置。即依次比較(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);對于每對氣泡(R[j+1],R[j]),若R[j+1].key void sort(int *a,int len) {int i=0; int j; int t; for(i=0;ia[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } int main(int argc, char *argv[]) { int a[10]={ -999,2,3,77,12,88,0,-8,99,100 }; int i=0; sort(a,10); for(i=0;i10;i++) { printf("%d ",a[i]); } return 0; }
冒泡排序是排序算法的一種,思路清晰,代碼簡潔,常被用在大學生計算機課程中。“冒泡”這個名字的由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。這里以從小到大排序為例進行講解。基本思想及舉例說明
冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往后移。經過一輪比較就,選出最大的數;經過第2輪比較,就選出次大的數,以此類推。下面以對 3 2 4 1 進行冒泡排序說明。
1.這個算法用rand函數產生新的要排序的數據,與已有的有序數列中的數據依次比較,如果遇到比他大的數據,就從該數據開始,一直交換到末尾,達到一個插入的效果。從而形成有序的數列。
2.此外,只用rand函數并不能達到真正隨機的效果。如果要實現(xiàn)真正隨機的效果,還要配合srand函數才行。
3.具體代碼如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,r; printf("請輸入一個種子\n"); scanf("%d",r);srand(r); for(int i=0;i9;i++) 。