C Language

排序方法之冒泡排序法

2017-04-17  本文已影响0人  水刃一木__九日

排序方法是C语言中一种重要的、基本的算法。一共有两种规律:升序和降序。升序是将数据从小到大排列,而降序是将数据从大到小排列。今天,我们来讲解排序方法中的冒泡排序法。我们知道,当烧开水时,烧开前气泡由大变小,烧开后,气泡由小变大。而我们的冒泡排序法也与之类似。


比如,有4个数字:{10、6、3、9},要求升序排列。

##第一轮

####第一步,将{10、6、3、9}中10与6进行比较,10>6,将10与6互换,得到{6、10、3、9}。10这个比6大的数向后移相当于气泡上升过程中变大。

####第二步,将{6、10、3、9}中10与3进行比较,10>3,将10与3互换,得到{6、3、10、9}。

####第三步,将{6、3、10、9}中的10与9进行比较,10>9,将10与9互换,得到{6、3、9、10}。

##第一轮结束,从{10、6、3、9}中找出最大值10。10在最后位置,不再变动。

##第二轮

####第一步,将{6、3、9}中的6与3比较,6>3,将6与3互换,得到{3、6、9}。

####第二步,将{6、3、9}中的6与9比较,6<9,将6与9不互换,得到{3、6、9}。

##第二轮结束,从{6、3、9}中找出最大值9。9在最后位置,不再变动。

##第三轮

####第一步,将{3、6}中3与6比较,3<6,将3与6不互换,得到{3、6}。

##第三轮结束,从{3、6}中找出最大值6。6在最后位置,不再变动。

从上面可以知道,4个数需要比较3轮,每轮次数递减。类比可知,n个数需要比较(n-1)轮,每轮次数递减。降序排序与上述过程相似,这里就不过多地赘述了。


下面用一个程序来说明。

##程序:

#include

int main()

{

int a[4];

int i,j,t;

printf("请输入4个整数:\n");

for (i=0;i<4;i++)

{

scanf("%d",&a[i]);

}

for (i=0;i<3;i++)

{

for (j=0;j<3;j++)

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

printf("从小到大排列为:\n");

for(i=0;i<4;i++)

{

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

}

printf("\n");

return 0;

}

##结果:

升序排序

冒泡排序法是排序法中的一个重要的分支,一定要重点掌握。

上一篇 下一篇

猜你喜欢

热点阅读