欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

算法基礎(chǔ)之歸并排序-創(chuàng)新互聯(lián)

本文概述:
  • 文章以歸并排序?yàn)轭},向讀者介紹了其整體思路、時(shí)間復(fù)雜度分析、核心代碼算法思路,并提供了完整實(shí)現(xiàn)代碼(C++ & Java)。
樣例展示:

image-20221223151949764

創(chuàng)新互聯(lián)專注于耿馬企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城建設(shè)。耿馬網(wǎng)站建設(shè)公司,為耿馬等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)整體思路:先分治,再合并
  • 算法整體上:

    • 將原數(shù)組,以數(shù)組下標(biāo)中點(diǎn)為分界點(diǎn),一分為二
  • 遞歸的每一層:

    • 數(shù)據(jù)來(lái)源:nums[left,right],分出的兩部分nums[left,mid],nums[mid + 1,right]

    • 排序操作:遍歷兩部分,按照大小,將其放入臨時(shí)數(shù)組temp[],注意下標(biāo)從0 開(kāi)始;

    • 放回操作:將排好序的臨時(shí)數(shù)組元素放回本層原數(shù)組

      • 遍歷的區(qū)間的對(duì)應(yīng)關(guān)系應(yīng)為

        • nums:[left,right]
        • temp:從零開(kāi)始,因?yàn)樵诿恳粚拥呐判驎r(shí),temp 都是從0 開(kāi)始的
時(shí)間復(fù)雜度分析
  • 歸并是穩(wěn)定的,在遞歸排序時(shí),每一趟會(huì)將原數(shù)組劃分為兩份,對(duì)于N 個(gè)數(shù)據(jù),總計(jì)為logN層;
  • 對(duì)每一層,均會(huì)進(jìn)行合并(掃描一遍,每一次會(huì)掃描right - left + 1個(gè)數(shù)),因此總體為N * logN
核心代碼算法思路:一共四步
  • 第一步:確定分界點(diǎn)下標(biāo)

    int mid = (left + right) >>1;

  • 第二步:向下遞歸,將本層數(shù)據(jù)以分界點(diǎn)為線,一分為二

    merge_sort(nums,left,mid),merge_sort(nums,mid + 1,right);

  • 第三步:將由本層分裂出的左右兩部分?jǐn)?shù)組按照大小進(jìn)行合并

    • 注意:第二步是遞歸向下的過(guò)程,此時(shí)遞歸深度不斷加深,第三步是遞歸向上,此時(shí)為遞歸回溯操作
    //開(kāi)始合并兩個(gè)數(shù)組
    int k = 0,startA = left,startB = mid + 1;
    while(startA<= mid && startB<= right)
    {if(nums[startA]< nums[startB]) temp[k++] = nums[startA++];
        else(temp[k++] = nums[startB++]);
    }
    ?
    while(startA<= mid)    temp[k++] = nums[startA++];
    while(startB<= right)    temp[k++] = nums[startB++];
  • 第四步:將本層存放在臨時(shí)數(shù)組中的元素,放回原數(shù)組

    • 注意:此時(shí),處理的是遞歸中的某一層,且臨時(shí)數(shù)組中保存的數(shù)據(jù)是排好序的;

    • 因此,遍歷的區(qū)間的對(duì)應(yīng)關(guān)系應(yīng)為

      • nums:[left,right]
      • temp:從零開(kāi)始,因?yàn)樵诿恳粚拥呐判驎r(shí),temp 都是從0 開(kāi)始的

    for(int startA = left,startB = 0;startA<= right;startA++,startB++) nums[startA] = temp[startB];

代碼實(shí)現(xiàn):C++
#include?
using namespace std;
?
const int N  = 1e6 + 10;
?
int n;
int nums[N], temp[N];
?
void merge_sort(int nums[],int left,int right)
{if(left >= right)   return;//遞歸出口
?
    //本層遞歸邏輯
    int mid = (left + right) >>1;//確定分界點(diǎn)下標(biāo)
    merge_sort(nums,left,mid),merge_sort(nums,mid + 1,right);//向下遞歸
?
    //開(kāi)始合并兩個(gè)數(shù)組
    int k = 0,startA = left,startB = mid + 1;
    while(startA<= mid && startB<= right)
    {if(nums[startA]< nums[startB]) temp[k++] = nums[startA++];
        else(temp[k++] = nums[startB++]);
    }
?
    while(startA<= mid)    temp[k++] = nums[startA++];
    while(startB<= right)    temp[k++] = nums[startB++];
?
    //將本段區(qū)間的有序結(jié)果放回原數(shù)組
    for(int startA = left,startB = 0;startA<= right;startA++,startB++) nums[startA] = temp[startB];
?
    //for (int i = 0;i< n;i++)   nums[i] = temp[i];注意,放回的是本段區(qū)間[left,right] 不是整個(gè)區(qū)間
?
}
?
int main()
{scanf("%d",&n);
    for(int i = 0;i< n;i++) scanf("%d",&nums[i]);//處理IO
?
    merge_sort(nums,0,n - 1);//進(jìn)行歸并排序
?
    for(int i = 0;i< n;i++)    printf("%d ",nums[i]);
?
}
?
?
?
作者:WAsbry
鏈接:https://www.acwing.com/activity/content/code/content/353277/
來(lái)源:AcWing
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
代碼實(shí)現(xiàn):Java
import java.io.BufferedInputStream;
import java.util.ArrayList;
import java.util.Scanner;
?
public class MergeSort {?
    //核心函數(shù):使用歸并排序?qū)o定數(shù)組的指定區(qū)間進(jìn)行升序排序
    public void merge_sort(int[] nums, int left, int right){//遞歸出口
        if (left >= right)  return;
?
        //本層遞歸邏輯
        int mid = (left + right) >>1;//選擇本層遞歸數(shù)組下標(biāo)中點(diǎn)作為分界
        merge_sort(nums,left,mid);
        merge_sort(nums,mid + 1,right);//向下遞歸
?
        //將本層原數(shù)組分裂出的兩部分升序合并在臨時(shí)數(shù)組中
        int startA = left,startB = mid + 1;//確定兩部分起點(diǎn)
        ArrayListtemp = new ArrayList<>();//臨時(shí)集合
?
        while (startA<= mid &&startB<= right){if(nums[startA]< nums[startB]){temp.add(nums[startA++]);
            }else {temp.add(nums[startB++]);
            }
        }
        while (startA<= mid){temp.add(nums[startA++]);
        }
        while (startB<= right){temp.add(nums[startB++]);
        }
?
        //將臨時(shí)數(shù)組中的升序序列放回原數(shù)組
        for(startA = left,startB = 0;startA<= right;startA++,startB++){nums[startA] = temp.get(startB);
        }
    }
?
    //輔助函數(shù):打印給定數(shù)組所有元素
    public void printArray(int[] nums){for (int i = 0;i< nums.length;i++){System.out.print(nums[i] + " ");
        }
    }
?
    //輔助函數(shù):根據(jù)鍵盤輸入初始化數(shù)組nums,并返回nums;輸入:1,2,3;返回nums{1,2,3}
    public int[] dealIO(){Scanner sc = new Scanner(new BufferedInputStream(System.in));
        String str = sc.next();
        String[] strArray = str.split(",");
?
        int[] nums = new int[strArray.length];
        for (int i = 0;i< strArray.length;i++){nums[i] = Integer.valueOf(strArray[i]);
        }
?
        return nums;
    }
?
?
    public static void main(String[] args) {MergeSort ma = new MergeSort();
        int[] nums = ma.dealIO();
        ma.merge_sort(nums,0,nums.length - 1);
        ma.printArray(nums);
    }
}
?
運(yùn)行截圖:Java

image-20221224135817213

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前題目:算法基礎(chǔ)之歸并排序-創(chuàng)新互聯(lián)
文章起源:http://aaarwkj.com/article12/jsegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站建設(shè)、App設(shè)計(jì)、微信公眾號(hào)品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
欧美一区二区三区爽| 欧美亚洲中文字幕高清| 久久国产精品成人免费蜜臀| 最新日韩av一区二区| 欧美国产日本日韩在线黄| 日本黄色免费在线观看网站| 亚洲成人精品久久久| 黄片在线免费在线播放| 久久这里只有精品伊人网| 夜夜春国产精品不卡一区二区| 亚洲综合日韩丝袜人妻| 91日韩中文字幕在线观看| 日本不卡不二三区在线看| av天堂午夜在线观看| 天堂中文在线免费观看av| 日本一区二区三区高清| 四虎最新在线播放视频| 日产精品一级二级三级爱| 色男人天堂亚洲男人天堂| 男同午夜视频在线观看| 亚洲国产韩国精品在线| 美女性生活免费视频网站| 日本一级特黄大片做受在线观看| 日韩精品女性三级视频 | 天堂在线av免费观看| 久久精品久久黄色片看看| 亚洲一区成人免费电影| 国产成人短视频在线播放| 国产日韩亚洲欧美在线| 男女做爰高清无遮挡免费| 精品一区二区三区推荐| 97成人在线视频免费| 日本一区二区三区伦理| 国产激情久久久久久久久久久| 欧美日韩国产91在线| 日本在线免费观看91| 免费又色又爽无遮挡网站| 高清偷自拍亚洲精品三区| 久久99热婷婷精品一区| 深夜福利视频一区二区| 四虎在线观看精品一区|