導航:首頁 > 源碼編譯 > 起泡法的演算法怎麼畫

起泡法的演算法怎麼畫

發布時間:2024-12-31 11:52:41

A. c語言中起泡法和選擇法有什麼不同,急!,謝謝!

兩者最大的區別在於演算法本身。


起泡法(冒泡法)是相鄰元素兩兩比較,每趟將最值沉底即可確定一個數在結果的位置,確定元素位置的順序是從後往前,其餘元素可能作相對位置的調整。可以進行升序或降序排序。


選擇法是每趟是選出一個最值確定其在結果序列中的位置,確定元素的位置是從前往後,而每趟最多進行一次交換,其餘元素的相對位置不變。可進行降序排序或升序排序。

一、冒泡法(起泡法)

1、演算法示例:用起泡法對10個整數按升序排序。

2、演算法分析:如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。比較的順序從前往後,經過一趟比較後,將最值沉底(換到最後一個元素位置),最大值沉底為升序,最小值沉底為降序。

3、演算法原碼

#include<stdio.h>
intmain()
{
inta[10],i,j,t;
printf("Pleaseinput10numbers:");
/*輸入源數據*/
for(i=0;i<10;i++)
scanf("%d",&a[i]);
/*排序*/
for(j=0;j<9;j++)/*外循環控制排序趟數,n個數排n-1趟*/
for(i=0;i<9-j;i++)/*內循環每趟比較的次數,第j趟比較n-j次*/
if(a[i]>a[i+1])/*相鄰元素比較,逆序則交換*/
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

/*輸出排序結果*/
printf("Thesortednumbers:");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf(" ");
return0;

}

二、選擇法

1、演算法示例要求:用選擇法對10個整數按降序排序。

2、演算法分析:每趟選出一個最值和無序序列的第一個數交換,n個數共選n-1趟。第i趟假設i為最值下標,然後將最值和i+1至最後一個數比較,找出最值的下標,若最值下標不為初設值,則將最值元素和下標為i的元素交換。

3、演算法源代碼:

#include<stdio.h>
intmain()
{
inta[10],i,j,k,t,n=10;
printf("Pleaseinput10numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)/*外循環控制趟數,n個數選n-1趟*/
{
k=i;/*假設當前趟的第一個數為最值,記在k中*/
for(j=i+1;j<n;j++)/*從下一個數到最後一個數之間找最值*/
if(a[k]<a[j])/*若其後有比最值更大的*/
k=j;/*則將其下標記在k中*/
if(k!=i)/*若k不為最初的i值,說明在其後找到比其更大的數*/
{t=a[k];a[k]=a[i];a[i]=t;}/*則交換最值和當前序列的第一
個數*/
}
printf("Thesortednumbers:");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf(" ");
}
閱讀全文

與起泡法的演算法怎麼畫相關的資料

熱點內容
元神的伺服器怎麼看 瀏覽:362
stc8單片機串口中斷 瀏覽:954
信號分析pdf 瀏覽:927
暴力刪除命令 瀏覽:803
qt如何編譯加快速度 瀏覽:903
php添加數據sql語句 瀏覽:717
免費的小說app有什麼 瀏覽:405
螺桿壓縮機進氣閥動畫 瀏覽:651
兩台伺服器如何做負載均衡 瀏覽:227
程序員的工資是漲的嗎 瀏覽:813
視頻存儲伺服器可以干什麼 瀏覽:463
創建文件夾安裝失敗怎麼回事 瀏覽:832
程序員高考隔了幾年 瀏覽:822
雲伺服器是哪一層 瀏覽:22
jit編譯器的jit什麼意思 瀏覽:330
我想清理手機中空白文件夾 瀏覽:976
電腦e盤文件夾刪不掉怎麼辦 瀏覽:607
外圓凹圓弧編程 瀏覽:462
html5編程題 瀏覽:840
乾燥機製冷壓縮機一開就跳動 瀏覽:389