1、打開Visual stdio軟件,在空項(xiàng)目里新建一個(gè)c語言程序空文件:
成都創(chuàng)新互聯(lián)成立與2013年,先為尼元陽等服務(wù)建站,尼元陽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為尼元陽企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
2、彈出的窗口選擇C++文件,將文件擴(kuò)展名改為“.c”點(diǎn)擊添加完成新建c文件,之后就可以編寫程序了:
3、這里從數(shù)組頭部開始,不斷比較相鄰的兩個(gè)元素的大小,讓較大的元素逐漸往后移動(dòng)(交換兩個(gè)元素的值),直到數(shù)組的末尾,經(jīng)過一輪的比較,就可以找到最大的元素,并將它移動(dòng)到最后一個(gè)位置,然后依次類推直到數(shù)組的最后一個(gè)數(shù)比較完,最后輸出結(jié)果;
4、最后需要執(zhí)行程序,按下crtl+F5彈出程序的執(zhí)行結(jié)果,就可以看到排序后的結(jié)果了:
冒泡法又稱起泡法,屬于交換排序.假設(shè)待排序數(shù)組a的長(zhǎng)度是n,排序過程如下:
1)令i=0
2)另j=n-1(從最后一個(gè)元素開始)
3)比較a[j-1]與a[j],若a[j-1]a[j],則把它們交換
4)若ji,則令j--,轉(zhuǎn)到3),否則轉(zhuǎn)到5)
5)若in-1,則令i++,轉(zhuǎn)到2),否則轉(zhuǎn)到6)
6)完成排序
#includestdio.h
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i10;i++)
scanf("%d",a[i]);
for(j=0;j9;j++) /*進(jìn)行9次循環(huán) 實(shí)現(xiàn)9趟比較*/
for(i=0;i9-j;i++) /*在每一趟中進(jìn)行9-j次比較*/
if(a[i]a[i+1]) /*相鄰兩個(gè)數(shù)比較,想降序只要改成a[i]a[i+1]*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i10;i++)
printf(" %d",a[i]);
}
擴(kuò)展資料:
冒泡排序算法的運(yùn)作
1、比較相鄰的元素。如果第一個(gè)比第二個(gè)大(?。?,就交換他們兩個(gè)。
2、對(duì)每一對(duì)相鄰元素作同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。這步做完后,最后的元素會(huì)是最大(?。┑臄?shù)。
3、針對(duì)所有的元素重復(fù)以上的步驟,除了最后已經(jīng)選出的元素(有序)。
4、持續(xù)每次對(duì)越來越少的元素(無序元素)重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較,則序列最終有序。
簡(jiǎn)單的表示
#include stdio.h
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
int main()
{
int a[10] = {2,1,4,5,6,9,7,8,7,7};
int i,j;
for (i = 0; i 10; i++)
{
for (j = 9; j i; j--)//從后往前冒泡
{
if (a[j] a[j-1])
{
swap(a[j], a[j-1]);
}
}
}
for (i = 0; i 10; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
參考資料來源:冒泡排序-百度百科
冒泡冒泡就像氣泡往上冒,就是選出大數(shù)將它沉入水底,然后挨個(gè)相鄰兩數(shù)比較,較大的數(shù)就換到后面,小數(shù)像氣泡一樣往上冒,直到比較到最后,使得最大數(shù)在最后
冒泡法是一種排序方法
冒泡法5 4 3 2 1
比如上面這5個(gè)數(shù)字我們把它按照由小到大的順序排列,
從前往后相臨兩位比較大小,如果前一位比后一位大就把它倆
換位,5比4大就把5和4換位,得到45321
5又比3大 5和3換位 得到43521 依次類推最后得到
43215 這樣就把最大的一個(gè)數(shù)字移到最后面了
然后不看5 ,剩下4321 再用上面的方法把4移動(dòng)到最后
得到 32145 在不看45 剩下321 把3移動(dòng)到
最后,依此類推。
最終得到12345
這就是冒泡法,是計(jì)算機(jī)編程排序中最簡(jiǎn)單快捷的方法。
除此意外我還能寫出許多排序方法,但是效率上都不如冒泡法
至于為什么叫冒泡法呢,你把這幾個(gè)數(shù)字豎起來看
1
2
3
4
5
把最大的數(shù)字5看成最大的泡泡,浮到最上,然后4又浮上去,依此類推
得到
5
4
3
2
1
所以形象的稱為冒泡法
——————————————————————————————————
以下是C語言中十個(gè)數(shù)的冒泡法排序的代碼
#includestdio.h
#includeconio.h
int main(void)
{
long arrary[9],
box=0L;
int i1=0,
i2=0;
for(i1=0;i19;i1++)
arrary[i1]=0;
printf("輸入數(shù)組元素:\n");
for(i1=0;i1=9;i1++)
{
printf("%3d",i1+1);
scanf("%d",arrary[i1]);
}
for(i1=0;i1=9;i1++)
for(i2=0;i2=9-i1;i2++)
{
if(arrary[i2]arrary[i2+1])
{
box=arrary[i2+1];
arrary[i2+1]=arrary[i2];
arrary[i2]=box;
}
}
printf("\n排序后為:\n");
for(i1=0;i1=9;i1++)
printf("%3d%d\n",i1+1,arrary[i1]);
getch();
return 0;
}
其實(shí)就如其名
如下數(shù)據(jù)
5 3 2 4 1
從5開始與相鄰的數(shù)字交換,大的擺右小的擺左
則第一的結(jié)果為
3 5 2 4 1
然后繼續(xù)執(zhí)行,直到與最后一個(gè)數(shù)據(jù)交換完畢,結(jié)束一次循環(huán)
于是的得到
3 2 4 1 5
很顯然,最后一個(gè)數(shù)據(jù)時(shí)最大的,
冒泡就是這個(gè)意思,每次循環(huán)找出最大的,然后找到除這個(gè)數(shù)之外最大的,直至數(shù)組排序完畢。
其實(shí)你也可以,用一個(gè)max函數(shù)返回?cái)?shù)組的最大值的位置,把它與最后一個(gè)數(shù)字交換
如
5 4 2 3 1-1 4 2 3 5
然后除掉最后一個(gè)數(shù)字,找最大值與倒數(shù)第2個(gè)數(shù)字交換。
1 4 2 3 5-1 3 2 4 5
。。以此類推