你好,游客 登录 注册 搜索
背景:
阅读新闻

冒泡法排序

[日期:2016-12-07] 来源:Linux社区  作者:jiayayao [字体: ]

最近在面试应届生,出了几道简单的面试题,冒泡法排序就是其中之一。很多人觉得冒泡简单,就疏忽了。网上搜了下,也流传着很多错误的写法。自己手写了一遍,也算是复习吧。

C++代码如下:

#include "stdafx.h"

/************************************************************************/
/*                            冒泡排序                                  */
/************************************************************************/
void BubbleSort(int data[], int n)
{
    for (int i=0; i<n-1; i++)
    {
        bool exchange = false;
        for (int j=0; j<n-i-1; j++)
        {
            if (data[j] > data[j+1])
            {
                int tmp = data[j];
                data[j] = data[j+1];
                data[j+1] = tmp;
                exchange = true;
            }
        }
        if (!exchange)
            break;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    int data[10]={-100, 79, -3, 0, 49, 21, 8, 200, 12341, 0};
    BubbleSort(data, 10);

    return 0;
}

注意两个问题:

  1. 冒泡法排序比较的是相邻的两个元素,而不是头元素和之后的几个元素相比,网上一些写法错误于此,归根结底就是自己没有实际去手写一边冒泡排序,想当然了;

  2. 注意循环结束的条件,并不是一定要一直比较直到程序结束,而是当一次比较过程中没有交换操作的时候,程序即可终止。

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-12/137992.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款