最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++歸并排序算法實例

 更新時間:2014年10月09日 09:10:40   作者:果凍想  
這篇文章主要介紹了C++歸并排序算法實例,本文先是介紹了什么是歸并排序,然后給出了實現(xiàn)代碼,需要的朋友可以參考下

歸并排序

歸并排序算法是采用分治法的一個非常典型的應用。歸并排序的思想是將一個數(shù)組中的數(shù)都分成單個的;對于單獨的一個數(shù),它肯定是有序的,然后,我們將這些有序的單個數(shù)在合并起來,組成一個有序的數(shù)列。這就是歸并排序的思想。它的時間復雜度為O(N*logN)。

代碼實現(xiàn)

復制代碼 代碼如下:

#include <iostream>
using namespace std;
 
//將有二個有序數(shù)列a[first...mid]和a[mid...last]合并。
void mergearray(int a[], int first, int mid, int last, int temp[])
{
     int i = first, j = mid + 1;
     int m = mid,   n = last;
     int k = 0;
 
     while (i <= m && j <= n)
     {
          if (a[i] <= a[j])
               temp[k++] = a[i++];
          else
               temp[k++] = a[j++];
     }
 
     while (i <= m)
          temp[k++] = a[i++];
 
     while (j <= n)
          temp[k++] = a[j++];
 
     for (i = 0; i < k; i++)
          a[first + i] = temp[i];
}
void mergesort(int a[], int first, int last, int temp[])
{
     if (first < last)
     {
          int mid = (first + last) / 2;
          mergesort(a, first, mid, temp);    //左邊有序
          mergesort(a, mid + 1, last, temp); //右邊有序
          mergearray(a, first, mid, last, temp); //再將二個有序數(shù)列合并
     }
}
 
bool MergeSort(int a[], int n)
{
     int *p = new int[n];
     if (p == NULL)
          return false;
     mergesort(a, 0, n - 1, p);
     delete[] p;
     return true;
}
 
int main()
{
     int arr[] = {2, 1, 4};
     MergeSort(arr, 3);
 
     for (int i = 0; i < 3; ++i)
     {
          cout<<arr[i]<<" ";
     }
     cout<<endl;
}

相關(guān)文章

  • C++ namespace相關(guān)語法實例分析

    C++ namespace相關(guān)語法實例分析

    這篇文章主要介紹了C++ namespace相關(guān)語法實例分析,對C++初學者有很好的參考借鑒價值,需要的朋友可以參考下
    2014-08-08
  • C語言實現(xiàn)字符轉(zhuǎn)unix時間戳的簡單實例

    C語言實現(xiàn)字符轉(zhuǎn)unix時間戳的簡單實例

    下面小編就為大家?guī)硪黄狢語言實現(xiàn)字符轉(zhuǎn)unix時間戳的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • C++ string格式化輸出方式

    C++ string格式化輸出方式

    今天小編就為大家分享一篇C++ string格式化輸出方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 基于C++實現(xiàn)的線程休眠代碼

    基于C++實現(xiàn)的線程休眠代碼

    這篇文章主要介紹了基于C++實現(xiàn)的線程休眠代碼,包括了Linux平臺及基于boost庫的兩種實現(xiàn)方法,有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C++中的throw關(guān)鍵字詳解

    C++中的throw關(guān)鍵字詳解

    throw關(guān)鍵字是在C語言中用來拋出異常的關(guān)鍵字,它通常與try和catch一起使用,用于在程序中發(fā)生錯誤時進行異常處理,當遇到無法處理的錯誤情況時,我們可以使用throw關(guān)鍵字主動拋出異常,所以本文給大家詳細的介紹一下C++中的throw關(guān)鍵字,需要的朋友可以參考下
    2023-09-09
  • C語言題解Leetcode56合并區(qū)間實例

    C語言題解Leetcode56合并區(qū)間實例

    這篇文章主要為大家介紹了C語言題解Leetcode56合并區(qū)間實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 詳解設(shè)計模式中的Command命令模式及相關(guān)C++實現(xiàn)

    詳解設(shè)計模式中的Command命令模式及相關(guān)C++實現(xiàn)

    這篇文章主要介紹了詳解設(shè)計模式中的Command命令模式及相關(guān)C++實現(xiàn),命令模式強調(diào)調(diào)用操作的對象和操作的具體實現(xiàn)者之間的解耦,需要的朋友可以參考下
    2016-03-03
  • C語言詳解如何實現(xiàn)堆及堆的結(jié)構(gòu)與接口

    C語言詳解如何實現(xiàn)堆及堆的結(jié)構(gòu)與接口

    堆是計算機科學中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個可以被看做一棵完全二叉樹的數(shù)組對象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法。本文將詳細介紹堆的結(jié)構(gòu)與接口,需要的可以參考一下
    2022-04-04
  • 如何求連續(xù)幾個數(shù)之和的最大值

    如何求連續(xù)幾個數(shù)之和的最大值

    本篇文章是對如何求連續(xù)幾個數(shù)之和的最大值進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言中利用封裝好的函數(shù)實現(xiàn)英文字母的大小寫轉(zhuǎn)換

    C語言中利用封裝好的函數(shù)實現(xiàn)英文字母的大小寫轉(zhuǎn)換

    這篇文章主要介紹了C語言中利用封裝好的函數(shù)實現(xiàn)英文字母的大小寫轉(zhuǎn)換,需要的朋友可以參考下
    2017-10-10

最新評論

元阳县| 砀山县| 桂阳县| 慈利县| 延川县| 连江县| 土默特右旗| 图木舒克市| 普安县| 罗田县| 镇安县| 黑山县| 兴业县| 蓬溪县| 罗江县| 南雄市| 绍兴市| 观塘区| 延津县| 屯留县| 离岛区| 普格县| 密山市| 沙田区| 台山市| 偏关县| 双柏县| 花垣县| 鄂伦春自治旗| 陈巴尔虎旗| 临清市| 武山县| 大宁县| 腾冲县| 杭州市| 庄河市| 车致| 宜川县| 台前县| 游戏| 邢台市|