欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)冒泡排序(BubbleSort)

 更新時間:2020年04月24日 17:12:10   作者:ChanJose  
這篇文章主要為大家詳細介紹了C++實現(xiàn)冒泡排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)冒泡排序的具體代碼,供大家參考,具體內(nèi)容如下

一、思路:

冒泡排序算法原理:

1.比較相鄰的元素。如果第一個數(shù)比第二個數(shù)大,就交換他們兩個。

2.對每一對相鄰元素做同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點,最后的元素應(yīng)該會是最大的數(shù)。

3.針對所有的元素重復(fù)以上的步驟,除了最后一個。(因為最后一個已經(jīng)排好,是最大的數(shù))

4.持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。(接著排第二大的數(shù),一直下去)

如:使用冒泡排序:25 16 9 90 23

            第一輪:如果某個數(shù)大于后面的數(shù),那么就交換;

                   第一次  16 25  9  90 23

                   第二次   16  9 25 90 23

                   …..

                   最終: 16 9 25 23 90   最大的數(shù)就冒到了最后。

                   比較次數(shù):4次

           第二輪:得到第二大的數(shù):9 16 23 25 90

           到此,已經(jīng)排好序,可以提前結(jié)束排序。

二、實現(xiàn)代碼:

#include <iostream>
using namespace std;
 
const int maxSize = 20;
 
// 冒泡排序:從小到大排序
template <class T>
void BubbleSort(T arr[], int n) {
  int i, j, flag;
  T temp;
  
  for(i = 0; i < n-1; i++) { // 進行n-1次
    flag = 0; // 交換標(biāo)志,0表示無交換,1表示有交換
    for(j = 0; j < (n-i-1); j++) { // 數(shù)組下標(biāo)最大為n-1
      if(arr[j] > arr[j+1]) { // 逆序就交換
        flag = 1; // 有交換
        temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
      }
    }
    if(flag == 0) // 無交換,說明已經(jīng)全部排好序,提前結(jié)束
      break;
  } // for
} // BubbleSort
 
int main(int argc, const char * argv[]) {
  int i, n, arr[maxSize];
  
  cout << "請輸入要排序的數(shù)的個數(shù):";
  cin >> n;
  cout << "請輸入要排序的數(shù):";
  for(i = 0; i < n; i++)
    cin >> arr[i];
  cout << "排序前:" << endl;
  for(i = 0; i < n; i++)
    cout << arr[i] << " ";
  cout << endl;
  BubbleSort(arr, n);
  cout << "排序后:" << endl;
  for(i = 0; i < n; i++)
    cout << arr[i] << " ";
  cout << endl;
  return 0;
}

測試結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C/C++利用libxml2高效輸出XML大文件詳解

    C/C++利用libxml2高效輸出XML大文件詳解

    這篇文章主要給大家介紹了關(guān)于C/C++利用libxml2高效輸出XML大文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • C語言動態(tài)規(guī)劃點殺dp算法LeetCode炒股習(xí)題案例解析

    C語言動態(tài)規(guī)劃點殺dp算法LeetCode炒股習(xí)題案例解析

    這篇文章主要介紹為了C語言動態(tài)規(guī)劃點殺dp算法,本文以LeetCode炒股習(xí)題案例來為大家進行詳細解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • C++?socket通信遇到的問題及解決方法

    C++?socket通信遇到的問題及解決方法

    這篇文章主要介紹了C++?socket通信遇到的問題,通過代碼修改來解決這個問題,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • C++?超詳細示例講解list的使用

    C++?超詳細示例講解list的使用

    list是一種序列式容器。list容器完成的功能實際上和數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表是極其相似的,list中的數(shù)據(jù)元素是通過鏈表指針串連成邏輯意義上的線性表,也就是list也具有鏈表的主要優(yōu)點,即:在鏈表的任一位置進行元素的插入、刪除操作都是快速的
    2022-07-07
  • C++設(shè)計模式之CRTP的使用

    C++設(shè)計模式之CRTP的使用

    CRTP全稱是curious?recurring?template?pattern,即奇異遞歸模版模式,是一種c++的設(shè)計模式,精巧地結(jié)合了繼承和模板編程的技術(shù),下面就跟隨小編一起來學(xué)習(xí)一下CRTP的使用吧
    2023-10-10
  • C語言動態(tài)內(nèi)存管理的實現(xiàn)

    C語言動態(tài)內(nèi)存管理的實現(xiàn)

    本文主要介紹了C語言動態(tài)內(nèi)存管理的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 手把手教你用C語言實現(xiàn)三子棋

    手把手教你用C語言實現(xiàn)三子棋

    三子棋是黑白棋的一種。三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。這篇文章就教你如何用C語言實現(xiàn)三子棋的功能
    2021-08-08
  • C/C++ 獲取Windows系統(tǒng)的位數(shù)32位或64位的實現(xiàn)代碼

    C/C++ 獲取Windows系統(tǒng)的位數(shù)32位或64位的實現(xiàn)代碼

    這篇文章主要介紹了C/C++ 獲取Windows系統(tǒng)的位數(shù)32位或64位的實現(xiàn)代碼的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • 詳解C++編程中類的成員變量和成員函數(shù)的相關(guān)知識

    詳解C++編程中類的成員變量和成員函數(shù)的相關(guān)知識

    這篇文章主要介紹了C++編程中類的成員變量和成員函數(shù)的相關(guān)知識,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C語言超詳細講解輪轉(zhuǎn)數(shù)組

    C語言超詳細講解輪轉(zhuǎn)數(shù)組

    這篇文章主要給大家講解輪轉(zhuǎn)數(shù)組的問題,一個問題不局限于一種解法,希望你看了本文的解決方法以后可以舉一反三自己編寫,這樣你的技術(shù)水平會有質(zhì)的提高
    2022-04-04

最新評論