c語言冒泡排序法函數(shù) c語言實(shí)現(xiàn)冒泡排序算法

冒泡排序法C語言解釋

既然要用外行的話來回答,我就打個(gè)簡單的比喻吧。

公司主營業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出城東免費(fèi)做網(wǎng)站回饋大家。

【比喻】

假如你是體育老師,你前面有一排隨機(jī)站立的學(xué)生,10個(gè),高矮不一。如果你要用冒泡排序的思路來讓他們從低到高來排隊(duì),你可以這樣。

第一遍:

從左往右,第一個(gè)跟第二個(gè)比較,高的那么換到右邊,接著第2個(gè)跟第3個(gè)比較,高的再換到右邊。這樣以此類推,第一遍做完后,你能保證最高的那個(gè)被移動(dòng)到了隊(duì)列最后。比如說姚*明同學(xué)。

第二遍:

如果我是體育老師,姚*明可以去玩手機(jī)了(呵呵),因?yàn)?,第一輪已?jīng)能保證他是最高的,且已經(jīng)站到最后了。那么我只要對(duì)前9位同學(xué),把第一遍的動(dòng)作再做一遍,那么你就可以保證找出第2高的同學(xué),移動(dòng)到姚*明左邊了。一次類推。

【短評(píng)】

所謂冒泡,就是模擬池塘里的小氣泡。你可以假定小的往上跑的快,大的跑的慢。那么水底到水面上就形成了一串大小不同的泡泡。

【截圖注釋】

bubble_sort(A)//函數(shù)名叫冒泡排序,需要傳入一個(gè)數(shù)組A作為參數(shù)

{

for(

i=1

to

N-1)//10個(gè)人,其實(shí)排9輪就好了,最后一輪就一個(gè)人不用排

{

haschang=false;//用一個(gè)邏輯性變量記錄排序過程中是否有數(shù)據(jù)交換,開始為false

for(j=1

to

N-i)//每一輪要排序的人數(shù)是遞減的,

i是遞增,所以每一次內(nèi)循環(huán)N-i遞減

{

if(A[j]A[j+1])//如果A的第j個(gè)元素比后面那個(gè)大,就交換位置

{

temp=A[j];//先把A[j]做個(gè)備份

A[j]=A[j+1];//然后把A[j+1]裝到A[j]中

A[j+1]=temp;//最后把原來備份的temp

放到A[j+1]

實(shí)現(xiàn)交換

haschange=true;//發(fā)生了數(shù)據(jù)交換,修改標(biāo)識(shí)。

}

}

}

樓主好運(yùn)。

C語言冒泡排序。

#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++)/*進(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("thesortednumbers:\n");

for(i=0;i10;i++)

printf("%d",a[i]);

}

擴(kuò)展資料:

冒泡排序算法的運(yùn)作

1、比較相鄰的元素。如果第一個(gè)比第二個(gè)大(?。徒粨Q他們兩個(gè)。

2、對(duì)每一對(duì)相鄰元素作同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。這步做完后,最后的元素會(huì)是最大(?。┑臄?shù)。

3、針對(duì)所有的元素重復(fù)以上的步驟,除了最后已經(jīng)選出的元素(有序)。

4、持續(xù)每次對(duì)越來越少的元素(無序元素)重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較,則序列最終有序。

簡單的表示

#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語言冒泡排序

C語言冒泡排序法的排序規(guī)則:將被排序的記錄數(shù)組R[1..n]垂直排列,每個(gè)記錄R看作是重量為R.key的氣泡。根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反復(fù)進(jìn)行,直到最后任何兩個(gè)氣泡都是輕者在上,重者在下為止。初始 R[1..n]為無序區(qū)。第一趟掃描 從無序區(qū)底部向上依次比較相鄰的兩個(gè)氣泡的重量,若發(fā)現(xiàn)輕者在下、重者在上,則交換二者的位置。即依次比較(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);對(duì)于每對(duì)氣泡(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; }

C語言冒泡排序法代碼

冒泡排序是排序算法的一種,思路清晰,代碼簡潔,常被用在大學(xué)生計(jì)算機(jī)課程中。“冒泡”這個(gè)名字的由來是因?yàn)樵酱蟮脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端,故名。這里以從小到大排序?yàn)槔M(jìn)行講解。基本思想及舉例說明

冒泡排序的基本思想就是不斷比較相鄰的兩個(gè)數(shù),讓較大的元素不斷地往后移。經(jīng)過一輪比較就,選出最大的數(shù);經(jīng)過第2輪比較,就選出次大的數(shù),以此類推。下面以對(duì) 3 2 4 1 進(jìn)行冒泡排序說明。

1.這個(gè)算法用rand函數(shù)產(chǎn)生新的要排序的數(shù)據(jù),與已有的有序數(shù)列中的數(shù)據(jù)依次比較,如果遇到比他大的數(shù)據(jù),就從該數(shù)據(jù)開始,一直交換到末尾,達(dá)到一個(gè)插入的效果。從而形成有序的數(shù)列。

2.此外,只用rand函數(shù)并不能達(dá)到真正隨機(jī)的效果。如果要實(shí)現(xiàn)真正隨機(jī)的效果,還要配合srand函數(shù)才行。

3.具體代碼如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,r; printf("請(qǐng)輸入一個(gè)種子\n"); scanf("%d",r);srand(r); for(int i=0;i9;i++) 。

新聞標(biāo)題:c語言冒泡排序法函數(shù) c語言實(shí)現(xiàn)冒泡排序算法
文章URL:http://muchs.cn/article44/dospeee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣Google、App設(shè)計(jì)虛擬主機(jī)、網(wǎng)站策劃、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)