C語言中什么叫氣泡法排序?
C語言冒泡排序(起泡法)冒泡法排序是C語言中較簡單的排序算法。
定義:它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,讓較大的元素逐漸往后移動(交換兩個元素的值),直到數組的末尾。如此反復,直到沒有可以交換的元素,(即從小到大排序好)。
思路:
有n個數,每輪替換一個數,假設最大的數在第一個,則一共需要替換n-1輪;此時最大數已經在最下面,
所以第二輪替換少一輪,以此類推;
在函數和數組中
/*對輸入的數進行從小到大排序*/
#include <stdio.h>
void Bubble(int foam[]);//冒泡排序
int main()
{
int froth[10];
int i;
for(i=0;i<=9;i++)//動態賦值
{
scanf("%d",&froth[i]);
}
Bubble(froth);//數組址傳遞
return 0;
}
void Bubble(int foam[])
{
int t;
int j,k;
for(j=0;j<9;j++)//進行9輪循環
{
for(k=0;k<9-j;k++)//減去循環的輪數
{
if(foam[k]>foam[k+1])//假設前面的數大于后面的數,如果真,則替換;
{
t = foam[k];
foam[k] = foam[k+1];
foam[k+1] = t;
}
}
}
putchar('\n');
for(j=0;j<=9;j++)//輸出替換好的值
{
printf("%3d",foam[j]);
}
}
在數組中
#include <stdio.h>
void main()
{
int a[8];//定義數組
int i,k;
int t;//替換變量
printf("輸入8個整數:");
for(i=0;i<=7;i++)//數組賦值
{
scanf("%d",&a[i]);
}
for(k=0;k<7;k++)
{
for(i=0;i<7-k;i++)
{
if(a[i]>a[i+1])
{
t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
}
}
for(i=0;i<=7;i++)//輸出
{
printf("%d\n",a[i]);
}
}