排序<1>冒泡排序

目录

 

1.什么是冒泡排序

2.冒泡排序的关键点

3.冒泡排序应用


1.什么是冒泡排序

        假设待排序列为9 6 4 2 7 8 5 3 1,要求是让待排序列按递增顺序排列。冒泡排序就是对待排序列扫描一次,就可以使得最大的9就位。具体过程排序过程是:先9和6比较,比6大所以位置互换得到6 9 4 2 7 8 5 3 1,然后9和4做比较,比4大互换位置得到6 4 9 2 7 8 5 3 1,接着和2进行比较,比2大互换位置得到6 4 2 9 7 8 5 3 1。。。。就这样一直比较下去,比较8次,也就是序列元素总个数N-1次。最终经过第一轮比较得到结果6 4 2 7 8 5 3 1 9,可以看出进过一轮的比较后,肯定会让最大的元素就位。

2.冒泡排序的关键点

冒泡排序的特点是进过一轮比较后,待排序列的最大或最小的元素一定会就位,但是其他元素的位置和初始序列是一摸一样,原封未动的。因此需要对经过第一轮调整后的序列再做交换排序,直到整个序列完全有序。怎样才能知道序列已经有序了呢?关键点1:就是如果一趟扫描过程中,没有发生元素交换动作,则序列就一定有序了。此外我们发现一趟扫描过程就要有一个元素就位,关键点2:那么下一个待排元素的比较次数就可以减一,因为最后一个元素已经是最大或最小了,没有再比较的必要。

3.冒泡排序应用

typedef int ElmentType;
void BubbleSort(ElmentType *S, int N)
{
    int p,j,flag;
    flag = 0;
    for(p = N-1; p>0; p--)
    {
        for(j = 0;j < p; j++)
        {
            if(S[j] > S[j+1])
            {
                ElmentType tmp = S[j];
                S[j] = S[j+1];
                S[j+1] = tmp;
                flag = 1;
            }
        }
        if(!flag)//already in sort
            break;  
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值