排序演算法之歸併排序(Java實現)

2021-09-24 16:29:44 字數 596 閱讀 7827

歸併排序的思想是將區域性有序的陣列合併為乙個大的有序陣列,前提是需要保證區域性陣列有序,如果區域性沒有順序,那麼就拆分,再合併,最差的情況是,拆到兩個陣列都只有乙個元素的時候,這時候再合併他們就成了乙個有序的陣列。

涉及到演算法上,就是將陣列直接分為兩部分low~mid,(mid+1)~high,其中mid=(low+high)/2,low=0,high=length-1,然後合併,依次遞迴每乙個拆分的小單元。

package com.***.algorithm.sort;

public class mergesort {

public static void merge(int nums,int low,int mid,int high){

int array = new int[nums.length];

int i = low,j=mid+1;

int size = 0;

while(i<=mid&&j<=high){

if(nums[i]這個演算法merge()方法中,最後需要把合併的新陣列中的元素依次放入原來的陣列中,這時候的語句是nums[i+low]=array[i],而不是nums[i]=array[i]。就是這個地方需要注意。 

排序演算法之歸併排序java實現

歸併排序主要是二路歸併排序。二路歸併排序的基本思想是 設陣列a中存放了n個資料元素,初始時把它們看成是n個長度為1的有序子陣列,然後從第乙個子陣列開始,把相臨的子陣列兩兩合併,得到n 2個長度為2的新的有序子陣列 當n為奇數時最後乙個新的子陣列長度為1 對這些新的子陣列再兩兩合併 如此重複,直到得到...

排序演算法之 合併排序 歸併排序(Java實現)

合併排序是一種典型的分治法演算法。先把陣列拆成兩個陣列,對兩個陣列進行繼續拆分,直到能夠對拆分後的兩個結果分別進行排序。也就是說,拆分後,使兩邊都是排好序的。顯然當拆分到兩邊只剩下乙個的時候,自然就是有序的。拆分過後是合併,合併也是這個演算法的核心過程,其實就好比是兩副牌,這兩副牌已經是有序的,要把...

排序演算法 歸併排序 java實現

歸併排序指的是將兩個已經排序的序列合併成乙個序列的操作。主要分為兩種,分別是自頂向下的排序方式和自底向上的排序方式。對於自頂向下的排序演算法 採用分治法進行自頂向下的程式設計方式,分治法的核心思想就是分解 求解 合併。1 將長度為n的無序序列平均分割成兩個子串行 2 對這兩個子串行分別進行歸併排序 ...