排序 歸併排序

2021-07-24 20:49:56 字數 1091 閱讀 3763

歸併排序 o(n*logn):

歸併排序的思想是把乙個陣列分成兩半排序每一半,然後用merge()方法把陣列的兩半歸併成乙個有序的陣列;把每一半都分成兩個四分之一,對每個四分之一部分排序,然後把他們歸併成乙個有序的一半;類似的,把每一對八分之一歸併成乙個有序的四分之一部分,每一對十六分之一部分歸併成乙個有序的八分之一部分,依次類推,反覆的分隔陣列,直到得到的子陣列只含有乙個資料項,這就是基值條件(遞迴的出口):設定只有乙個資料項的陣列是有序的。

在mergesort()方法中,每一次這個方法呼叫自身的時候排列都會被分成兩部分,並且方法每一次返回時都會把乙個較小的排列合併成乙個更大的排列。

當mergesort()發現兩個只有乙個資料項的陣列時,它就返回,把則兩個資料項歸併到乙個有抗個資料項的有序陣列中。每個生成的一對兩個資料項的陣列又被合併成乙個有四個資料項的有序陣列。這個過程持續下去,陣列越來越大直到這個陣列有序。

//向陣列中插入元素的方法

public

void insert(int value)

//輸出陣列元素的方法

public

void display()

}public

void mergesort()

private

void remergesort(int workspace,int lowerbound,int upperbound)

}private

void merge(int workspace,int lowptr,int highptr,int upperbound)

}public

static

void main(string args)

}//歸併排序的乙個缺點是它需要在儲存器中有另乙個大小等於被排序陣列資料專案數的//陣列,如果初始陣列幾乎佔滿整個儲存器,那麼歸併排序將不能工作。

排序 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。歸併 將兩個已經排好序的集合合併到乙個集合眾,並且保證新的集合也是有序的。核心點 只有乙個元素的集合是已經排好序的集合。歸併排序是建立在...

排序 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。2 路歸併演算法 1.演算法基本思路 設兩個有序的子檔...

排序 歸併排序

利用遞迴的思想,當n 1時,只有乙個元素需要排序,為遞迴臨界條件 否則,遞迴的將前半部分資料和後半部分資料各自歸併排序,得到排序後的兩部分資料,然後再將得到的兩部分合併到一起。mergesort algorithm public void mergesort int data mergesort例程...