當前位置:首頁 » 編程語言 » c語言起泡的原理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言起泡的原理

發布時間: 2023-06-14 03:19:31

『壹』 c語言中冒泡排序法(又稱起泡排序法)得具體程序

冒泡法我是這樣理解的,便於掌握和記憶。首先冒泡是n長度的數組開始的兩位開始,逐位雙雙比較一直到最後兩個,所以最外循環比較了n-1次。第一個數比較了以後就不比了,從第二個開始,一直比較到數組末尾,於是內循環的起始位置不同,每次都是外側i的值加0,也就是i。但結束的限制和外層循環是相同的。於是寫法為for
(i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)

『貳』 C語言編程,怎麼用起泡法對10個整數進行按升序排序最好給幾種方法!求最簡單方案!

#include<stdio.h>
void main()
{
int i,j,t,a[10];
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
for(i=0;i<10;i++){
for(j=1;j<10-i;j++){
if(a[i]>a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<10;i++){
printf("%d\t",a[i]);
}
}

『叄』 C語言 起泡法

本程序是由小到大排序;
語句:
for (j=1;j<=9;j++)
for(i=1; i<=10-j; i++)
是先內循環再外循環;j是為循環語句for(i=1; i<=10-j; i++)判斷數組a[i]與a[i+1]大小時用的輔助「標記」。當j=1時,for(i=1; i<=10-j; i++)語句中的i循環9次(因為10-j=9),把數組a[i]最大的值賦給a[10];
當j=2時,for(i=1; i<=10-j; i++)語句中的i循環8次,把第二個最大值賦給a[9];
當j=9時,for(i=1; i<=10-j; i++)語句中的i循環1次,把最小值賦給a[1],第二個最小值賦給a[2]。

『肆』 關於c語言的起泡法

從左到右倆倆比較 大的數放在右邊
75830
當前的第一個數和第二個數比較 7和5比較7大 交換7在右 57830
當前的第二個數和第三個數比較 7和8比較8大 不變8在右 57830
當前的第三個數和第四個數比較 8和3比較8大 交換8在右 57380
當前的第四個數和第五個數比較 8和0比較8大 交換8在右 57308
以上是一次內層的for循環也就是第一輪 結果是最大的數8到了最右面
除最大數8外的其他元素相對位置發生了改變
外層for循環第二輪 53078 7右2 530三個數相對位置不變
第三輪 30578 5右3 30倆數相對位置不變
第四輪 03578 3右4

『伍』 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(" ");
}