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

C++歸并排序算法詳解

 更新時間:2022年01月16日 14:57:36   作者:JJ寫代碼  
大家好,本篇文章主要講的是C++歸并排序算法詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

一.算法簡介

        歸并排序算法的平均時間復雜度是O(nlogn),歸并算法的實現就是通過分冶法,將一個待排序列分成一個個小的序列,然后對這些小的序列進行排序,然后進行合并,合并的時候也會進行排序,這樣,從整體拆成小塊,再從小塊合成整體的一個過程。

二.實現過程

        1)拆分待排序列

        2)進行排序合并

給大家寫了一個簡單的過程以便大家理解。

 這基本就是歸并排序的實現原理了,那么代碼是怎么實現的呢,下面給大家展示下代碼實現。

//時間復雜度是nlogn
#include <iostream>
 
using namespace std;
 
void Merge(int a[],int s,int mid,int e,int tmp[]);//歸并
void Merge_Sort(int a[],int s,int e,int tmp[]);//有序
 
int main(){
    int a[1000],tmp[1000];
    int n;
    cin >> n; 
    for(int i=0;i<n;i++)cin >> a[i];
    Merge_Sort(a,0,n-1,tmp);//對數組進行排序
    for(int i=0;i<n;i++)cout << a[i] << " ";
    system("pause");
    return 0;
}
 
void Merge_Sort(int a[],int s,int e,int tmp[]){
    if(s<e){
        int m=(s+e)/2;
        Merge_Sort(a,s,m,tmp);//左邊有序
        Merge_Sort(a,m+1,e,tmp);//右邊有序
        Merge(a,s,m,e,tmp);//歸并
    }
}
 
void Merge(int a[],int s,int mid,int e,int tmp[]){
    int p1,p2,p=0;
    p1=s,p2=mid+1;
    //判斷大小,得到排列順序
    while(p1<=mid&&p2<=e){
        if(a[p1]<a[p2]){    
            tmp[p++]=a[p1++];
        }
        else{
            tmp[p++]=a[p2++];
        }
    }
    //剩余數據自動放到末尾
    while(p1<=mid){
        tmp[p++]=a[p1++];
    }
    while(p2<=e){
        tmp[p++]=a[p2++];
    }
    //將tmp中排好序的數組拷貝到a中
    for(int i=0;i<e-s+1;++i){
        a[s+i]=tmp[i];
    }
}

大家看注釋行事,注釋基本在關鍵點都注明了,希望對大家有幫助 

總結

到此這篇關于C++歸并排序算法詳解的文章就介紹到這了,更多相關C++歸并排序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言程序的編譯與預處理基礎定義講解

    C語言程序的編譯與預處理基礎定義講解

    在ANSI C的任意一種實現中,存在2中不同的環(huán)境。第一種是翻譯環(huán)境,負責將源代碼轉換成可執(zhí)行的機器指令;第二種是執(zhí)行環(huán)境,用于實際執(zhí)行代碼。一個程序從源代碼到可執(zhí)行程序一共會經歷四個過程,分別是預處理、編譯、匯編、鏈接,本篇讓我們來了解編譯與預處理
    2022-04-04
  • C語言修煉之路悟徹數組真妙理?巧用下標破萬敵下篇

    C語言修煉之路悟徹數組真妙理?巧用下標破萬敵下篇

    在C語言和C++等語言中,數組元素全為指針變量的數組稱為指針數組,指針數組中的元素都必須具有相同的存儲類型、指向相同數據類型的指針變量。指針數組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-02-02
  • C++遺傳算法類文件實例分析

    C++遺傳算法類文件實例分析

    這篇文章主要介紹了C++遺傳算法的一個類文件,是學習遺傳算法的絕佳參考資料,需要的朋友可以參考下
    2014-08-08
  • C++算法之在無序數組中選擇第k小個數的實現方法

    C++算法之在無序數組中選擇第k小個數的實現方法

    這篇文章主要介紹了C++算法之在無序數組中選擇第k小個數的實現方法,涉及C++數組的遍歷、判斷、運算等相關操作技巧,需要的朋友可以參考下
    2017-03-03
  • C++中變量的類型與作用域學習教程

    C++中變量的類型與作用域學習教程

    這篇文章主要介紹了C++中變量的類型與作用域,C++是面向對象的編程語言,一定要注意局部變量與全局變量的作用范圍,需要的朋友可以參考下
    2016-05-05
  • c語言排序之歸并排序(遞歸和非遞歸)

    c語言排序之歸并排序(遞歸和非遞歸)

    這篇文章主要介紹了?c語言排序之歸并排序(遞歸和非遞歸),歸并就是把兩個或多個序列合并,本文主要介紹二路歸并,下文相關資料需要的小伙伴可以參考一下
    2022-04-04
  • 詳解C++編程中對二進制文件的讀寫操作

    詳解C++編程中對二進制文件的讀寫操作

    這篇文章主要介紹了C++編程中對二進制文件的讀寫操作,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • sdl顯示一張bmp圖片示例

    sdl顯示一張bmp圖片示例

    這篇文章主要介紹了sdl顯示一張bmp圖片示例,需要的朋友可以參考下
    2014-04-04
  • 談談C++學習之Pair的使用方法

    談談C++學習之Pair的使用方法

    pair是一種模板類型,其中包含兩個數據值,兩個數據的類型可以不同,本篇詳細的介紹了Pair的使用方法和實例,有興趣的同學可以了解一下。
    2016-12-12
  • C語言中strcpy和strcat的使用和模擬實現

    C語言中strcpy和strcat的使用和模擬實現

    strcpy()?函數是?C語言中一個非常重要的字符串處理函數,其功能是將一個字符串復制到另一個字符串中,strcat函數可以將一個字符串拼接到另一個字符串的末尾,本文給大家介紹了C語言中strcpy和strcat的使用和模擬實現,需要的朋友可以參考下
    2024-03-03

最新評論

方城县| 易门县| 海口市| 彰化县| 米脂县| 东乌珠穆沁旗| 彭泽县| 商城县| 宁安市| 双流县| 清涧县| 崇信县| 乌兰浩特市| 石屏县| 德江县| 合江县| 嘉祥县| 林甸县| 彭阳县| 永仁县| 桑日县| 阆中市| 潍坊市| 海林市| 精河县| 镇康县| 东乡族自治县| 伊宁县| 蒲城县| 海南省| 屏东市| 桐梓县| 策勒县| 沁阳市| 眉山市| 泾阳县| 夏河县| 辽宁省| 大悟县| 闸北区| 定南县|