一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++歸并排序算法實例

C++歸并排序算法實例

2021-02-05 14:34果凍想 C/C++

這篇文章主要介紹了C++歸并排序算法實例,本文先是介紹了什么是歸并排序,然后給出了實現代碼,需要的朋友可以參考下

歸并排序

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

代碼實現

 

復制代碼 代碼如下:

#include <iostream>
using namespace std;
 
//將有二個有序數列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); //再將二個有序數列合并
     }
}
 
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;
}

延伸 · 閱讀

精彩推薦
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
主站蜘蛛池模板: 欧美日韩1区2区 | 男女羞羞的视频 | 特级淫片欧美高清视频蜜桃 | 三级aa久久| 国产精品成人 | 4tube高清性欧美 | 男女真实无遮挡xx00动态图软件 | 三级全黄裸体 | 亚洲国产精品久久久久久 | 精品成人片深夜 | 女教师波多野结衣高清在线 | 日本网络视频www色高清免费 | 91传媒在线观看 | 99re在线视频免费观看 | 黑人草 | 天美传媒传媒免费观看 | 99人中文字幕亚洲区 | 亚洲欧美久久一区二区 | 亚洲区精品久久一区二区三区 | 欧美国产在线观看 | 黑人异族日本人hd | 电车痴汉(han)| 国产女乱淫真高清免费视频 | 日本激情网站 | 日韩资源在线 | 色老板在线免费视频 | 精品国产一级毛片大全 | 日本红色高清免费观看 | 99国产高清久久久久久网站 | www.精品视频| 91庥豆果冻天美精东蜜桃传媒 | 精彩国产萝视频在线 | 国产在线视频第一页 | 日本免费一区二区三区四区五六区 | 国产视频一区二区 | 哇嘎在线精品视频在线观看 | 91短视频在线免费观看 | 花唇肿胀无法合拢双性 | 免费一级毛片完整版在线看 | 亚洲AV久久无码精品九号 | 日韩久久综合 |