程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 冒泡法排序,冒泡排序

冒泡法排序,冒泡排序

編輯:C++入門知識

冒泡法排序,冒泡排序


  最近在面試應屆生,出了幾道簡單的面試題,冒泡法排序就是其中之一。很多人覺得冒泡簡單,就疏忽了。網上搜了下,也流傳著很多錯誤的寫法。自己手寫了一遍,也算是復習吧。

  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. 注意循環結束的條件,並不是一定要一直比較直到程序結束,而是當一次比較過程中沒有交換操作的時候,程序即可終止。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved