當前位置:首頁 » 編程語言 » c語言函數冒泡法

c語言函數冒泡法

發布時間: 2022-12-25 17:00:31

c語言 冒泡法是什麼啊

冒泡法是排序的一種方法,冒泡法和冒泡排序實是一個定義.之所以叫冒泡法,即是像在水中的氣泡一樣,在一輪兩數比較之後將最小(或最大的數字)排在一列數的左邊(當然右邊也行,總之是一邊).然後排開這個數,經過N-2排開之後,整列數的大小就是按順序來的.

Ⅱ C語言冒泡法

#include<iostream>
usingnamespacestd;
voidSort(inta[],intn);
intmain()
{
inti,n,a[1001];
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
Sort(a,n);
for(i=1;i<=n;i++)
cout<<a[i]<<"";
system("pause");
return0;
}
voidSort(inta[],intn)
{
inti,j,x,flag;
for(i=1;i<=n;i++)
{
flag=0;
for(j=1;j<=n-i;j++)
if(a[j+1]<a[j])
{
flag=1;
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
if(flag==0)
break;
}
}

【注意】上面那個數組下標是從1開始的,本人習慣從1開始

還有一種超好的排序方法,我一直用它:

#include<iostream>
#include<algorithm>
usingnamespacestd;
intmain()
{
intn,i,a[10001];
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);//默認是升序
for(i=1;i<=n;i++)
cout<<a[i]<<"";
system("pause");
return0;
}

Ⅲ c語言冒泡法

printf("the scored numbers:\n")後面少個分號
你代碼的第7行應該改為 for(i=0;i<10;i++)

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

Ⅳ 關於C語言冒泡演算法的詳解

冒泡法又稱起泡法,屬於交換排序.假設待排序數組a的長度是n,排序過程如下:
1)令i=0
2)另j=n-1(從最後一個元素開始)
3)比較a[j-1]與a[j],若a[j-1]>a[j],則把它們交換
4)若j>i,則令j--,轉到3),否則轉到5)
5)若i<n-1,則令i++,轉到2),否則轉到6)
6)完成排序

Ⅳ c語言冒泡法

實參是形參的拷貝
實參的值改變不影響形參

#include <stdio.h>
void exch(int *a,int *b)
{
int temp;
temp =*a;
*a=*b;
*b=temp;
}

void comexch(int *m,int *n)
{
if(*m>*n)
exch(m,n);
}

void main()
{
int i,a[10];
printf("please input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d\n",a[i]);
int j,k,temp;
for(j=0;j<10;j++)
{
for(k=10;k>j;k--)
comexch(&a[k-1],&a[j]);
}
printf("\n結果為:\n");
for(k=0;k<10;k++)
printf("%d\n",a[k]);

}

Ⅵ C語言的冒泡法

修改好了!!如下:

#include<stdio.h>

void bubble(int a[100], int n)
{
int i=0;
int j=0;
int temp=0;
char select; //選擇

printf("Please Select size b/l: \n"); //選擇從大到小或者從小到大
scanf("%s",&select); //運行中就是這里有錯誤,select沒有給我一個輸入就自己跳過去了,很奇怪
//修改好了,%c改為%s

switch (select)
{
case 'l': //從小到大
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] > a[i+1])
{

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}

}break;

case 'b': //從大到小
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] < a[i+1])
{

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}

}break;

default: printf("error\n");
}

for (i=0; i<n; ++i) //輸出排列好的數組
{

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

printf("\n");

}

void main()
{ int n=0;
int i=0;
int a[100]={0};

printf(" Please enter the number of array :\n");
scanf("%d", &n); //輸入數組元素的個數

printf(" Please enter the array :\n");

for (i=0; i<n; ++i) //輸入數組裡面的各元素
{
scanf("%d", &a[i]);
}

bubble(a, n);

}

Ⅶ C語言冒泡排序法是什麼

冒泡排序法,是C語言常用的排序演算法之一,意思是對一組數字進行從大到小或者從小到大排序的一種演算法。

具體方法是:

相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);如果其與我們的期望一致,則不用交換。重復這樣的過程,一直到最後沒有數值需要交換,則排序完成。

C語言常見的排序演算法:

1、冒泡排序

基本思想:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出一個未排序中最大的數放到數組後面。

2、快速排序

基本思想:選取一個基準元素,通常為數組最後一個元素(或者第一個元素)。從前向後遍歷數組,當遇到小於基準元素的元素時,把它和左邊第一個大於基準元素的元素進行交換。在利用分治策略從已經分好的兩組中分別進行以上步驟,直到排序完成。

3、直接插入排序

基本思想:和交換排序不同的是它不用進行交換操作,而是用一個臨時變數存儲當前值。當前面的元素比後面大時,先把後面的元素存入臨時變數,前面元素的值放到後面元素位置,再到最後把其值插入到合適的數組位置。

4、直接選擇排序

基本思想:依次選出數組最小的數放到數組的前面。首先從數組的第二個元素開始往後遍歷,找出最小的數放到第一個位置。再從剩下數組中找出最小的數放到第二個位置。以此類推,直到數組有序。

以上內容參考 網路-排序演算法、網路-c語言冒泡排序


Ⅷ c語言 冒泡法

for(j=0;j<=9;j++)
for (i=0;i<10-j;i++)
你可以這樣來分析,
第一次循環 j=0;
for(j=0; j<=9; j++)
for(i=0; i<10;i++)
//這一次把最大的數移到了a[9],即最後面
第二次循環,j=1;
for(j=1; j<=9; j++)
for(i=0; i<9;i++)
//這一次把第2大的數移到了a[8]
第三次循環,j=2;
for(j=2; j<=9; j++)
for(i=0; i<8;i++)
//這一次把第3大的數移到了a[7].
這樣依次類推,最後一次循環
for(j=9; j<=9; j++)
for(i=0; i<1;i++)
這樣a[0]就是最小的數了。

Ⅸ c語言中冒泡法是什麼意思

冒泡法是一種排序方法
冒泡法5
4
3
2
1
比如上面這5個數字我們把它按照由小到大的順序排列,
從前往後相臨兩位比較大小,如果前一位比後一位大就把它倆
換位,5比4大就把5和4換位,得到45321
5又比3大
5和3換位
得到43521
依次類推最後得到
43215
這樣就把最大的一個數字移到最後面了
然後不看5
,剩下4321
再用上面的方法把4移動到最後
得到
32145
在不看45
剩下321
把3移動到
最後,依此類推。
最終得到12345
這就是冒泡法,是計算機編程排序中最簡單快捷的方法。
除此意外我還能寫出許多排序方法,但是效率上都不如冒泡法
至於為什麼叫冒泡法呢,你把這幾個數字豎起來看
1
2
3
4
5
把最大的數字5看成最大的泡泡,浮到最上,然後4又浮上去,依此類推
得到
5
4
3
2
1
所以形象的稱為冒泡法
——————————————————————————————————
以下是C語言中十個數的冒泡法排序的代碼
#include<stdio.h>
#include<conio.h>
int
main(void)
{
long
arrary[9],
box=0L;
int
i1=0,
i2=0;
for(i1=0;i1<9;i1++)
arrary[i1]=0;
printf("輸入數組元素:\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;
}

Ⅹ c語言中的冒泡法是怎樣的

其實就如其名
如下數據
5 3 2 4 1
從5開始與相鄰的數字交換,大的擺右小的擺左
則第一的結果為
3 5 2 4 1
然後繼續執行,直到與最後一個數據交換完畢,結束一次循環
於是的得到
3 2 4 1 5
很顯然,最後一個數據時最大的,
冒泡就是這個意思,每次循環找出最大的,然後找到除這個數之外最大的,直至數組排序完畢。
其實你也可以,用一個max函數返回數組的最大值的位置,把它與最後一個數字交換

5 4 2 3 1->1 4 2 3 5
然後除掉最後一個數字,找最大值與倒數第2個數字交換。
1 4 2 3 5->1 3 2 4 5
。。以此類推

熱點內容
winxp訪問不了win7 發布:2024-05-05 23:05:23 瀏覽:733
演算法牛 發布:2024-05-05 22:43:40 瀏覽:719
grublinux引導 發布:2024-05-05 22:37:56 瀏覽:215
unix高級編程第三版pdf 發布:2024-05-05 22:32:09 瀏覽:958
手機wap網站源碼 發布:2024-05-05 22:27:44 瀏覽:259
python修改文件某一行 發布:2024-05-05 22:18:22 瀏覽:457
md5加密64 發布:2024-05-05 21:59:30 瀏覽:527
259pp頁面訪問升級 發布:2024-05-05 21:47:51 瀏覽:89
迅雷阻止上傳 發布:2024-05-05 21:26:19 瀏覽:914
資料庫運維題 發布:2024-05-05 21:21:47 瀏覽:962