快速排序與歸併排序 leetcode 912

2021-10-20 13:09:40 字數 844 閱讀 8706

leetcode 原題鏈結

給你乙個整數陣列 nums,請你將該陣列公升序排列。

示例 1:

輸入:nums = [5,2,3,1]

輸出:[1,2,3,5]

示例 2:

輸入:nums = [5,1,1,2,0,0]

輸出:[0,0,1,1,2,5]

1 <= nums.length <= 50000

-50000 <= nums[i] <= 50000

class

solution

//歸併

int i=

0, j=mid;

while

(iwhile

(i}void

merge_sort

(vector<

int>

&nums,

int l,

int r)

void

quick_sort

(vector<

int>

&nums,

int l,

int r)

nums[l]

=pivot;

//此時軸點已就緒,對軸點左右兩部分進行排序

quick_sort

(nums, beg, l)

;quick_sort

(nums, l+

1, end);}

public

: vector<

int>

sortarray

(vector<

int>

& nums)

};

歸併排序與快速排序

1.演算法簡介 歸併排序和快速排序都是採用遞迴的結構實現的,不同的是歸併排序在遞迴過程中有合併子串行的過程,而快速排序中沒有,但是快速排序中有較為複雜的劃分過程。二者的平均時間複雜度均為o nlgn 其中快速排序的係數較小 歸併排序最壞情況複雜度為o nlgn 快排在最壞情況下時間複雜度為o n 2...

快速排序與歸併排序

簡單總結一下快速排序和歸併排序的用法,這兩種方法十分省時,在題目中常用。快速排序 基本思想通過一趟排序將代拍記錄分成兩部分,一部分記錄關鍵字比另一部分小,再對這兩部分記錄繼續排序,達到整個序列有序。具體做法是附設兩個指標i和j,初值分別為l,r,任選乙個記錄做樞紐取mid,首先從j位置向前搜找到第乙...

歸併排序與快速排序

1.分治思想顧名思義,就是分而治之的意思,將大問題換分為無數個小問題,小的問題解決了,大的問題自然也就解決了。分之演算法一般都是用遞迴來實現的。分治是一種解決問題的處理思想,遞迴是是一種程式設計技巧。2.歸併排序歸併排序的核心思想 就是講乙個陣列分為前後兩部分分別進行排序,然後將有序的兩個陣列再合併...