冒泡排序

来源:互联网 发布:互联网新闻数据分析 编辑:程序博客网 时间:2024/06/03 12:05

冒泡排序是一种最为常用的排序方法。是一类具有“交换”性质的排序方法。其基本思想如下:

将序列中的第一个元素与第二个元素进行比较,若前者大于后者,则将第一个元素与第二个元素进行位置交换,否则不交换。

然后让第二个与第三个元素进行比较……

等等

直到将第n-1个元素与第n个元素进行比较为止。

例题:编写一个c程序,实现数据序列{1,5,6,3,2,8,4,9,7,0};的从小到大得排序,并且输出数列元素。

#include <stdio.h>
void bubblesort(int k[],int n)
{
    int i,j,tmp,flag=1;
    for(i=1;i<=n-1 && flag==1;i++)
    {
        flag=0;
        for(j=0;j<n-i;j++)
        {
            if(k[j]>k[j+1])/*数据交换*/
            {
                tmp=k[j+1];
                k[j+1]=k[j];
                k[j]=tmp;
                flag=1;
            }
        }
    }
}
main()
{
    int i,a[10]={1,5,6,3,2,8,4,9,7,0};
    printf("原序列的元素的排列顺序:\n");
    for(i=0;i<10;i++)
        printf("%3d",a[i]);
    bubblesort(a,10);
    printf("\n冒泡排列好的顺序是:\n");
    for(i=0;i<10;i++)
        printf("%3d",a[i]);
    getchar();
}

其运行结果如下:


 

程序设计好的地方:

1、在算法中设置了一个flag。规定当flag为1时,说明本次排序中有元素交换的动作,因此,还需要下一次的比较。当flag为0时,说明排序已经排好,只要比较就行了。

2、注意算法中用的是数组,故j的值应该从0开始。

原创粉丝点击