冒泡排序法是如何排序的?

2022-10-13 06:37

C語(yǔ)言中編程中的冒泡排序法,最好給一個(gè)例子~~~
2022-10-13 07:51
比如有一組數(shù)為12,23,1,4,2,6。需要使用冒泡排序方法使這組數(shù)從小到大排列。首先12和23比較,12<23,則位置不變;接著23和1比較,因?yàn)?3>1,所以交換23和1的位置,這組數(shù)這時(shí)是12 1 23 4 2 6;然后比較23和4,因?yàn)?3>4,所以交換23和4,這組數(shù)變?yōu)?2 1 4 23 2 6;然后比較23和2,23>2,再交換,變?yōu)?2 1 4 2 23 6;然后比較23和6,23>6,再交換,最后為12 1 4 2 6 23。這就叫經(jīng)過了一趟排序,即相鄰兩數(shù)比較,大的放在后面,經(jīng)過一趟排序后,最大的數(shù)就冒泡到最后面了。然后再對(duì)前n-1個(gè)數(shù)進(jìn)行第二趟排序,排序后第二大的數(shù)就放在了第n-1個(gè)位置;最后經(jīng)過n-1趟排序后整個(gè)數(shù)組就有序了。
更多回答
其實(shí)很簡(jiǎn)單,就是一個(gè)一個(gè)進(jìn)行對(duì)比如果ab就把兩個(gè)變量進(jìn)行交換,使得最大/最小的排在前面。
2 4 3 5 1 五個(gè)數(shù)
2<4 交換成為 42351
2<3 成為 43251
2<5 成為 43521
2>1 不交換 43521
然后最小的1就一定會(huì)在最后
然后比較前4個(gè)數(shù),4>3,3<5(交換),3>2;
成為45321,
前3個(gè)數(shù)4<5(交換),4>3
就成為了54321
這是一個(gè)巧合的例子,程序應(yīng)該還要比較前兩個(gè)數(shù)
5>4
最后成為54321。
以下是樣例程序。

#include
int main()
{
int a[5]={2,4,3,5,1};
int i,j,t; //i,j是計(jì)數(shù)器,t用作交換
for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(a[j] {
t=a[j];
a[j]=a[j+1];
a[j+1]=t; //就把兩個(gè)數(shù)交換
}
}
}
printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
return 0; //程序正常結(jié)束
}

你懂了么?
熱門問答