给你一个整数数组 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def merge_sort(self, nums, l, r):
if l == r:
return
mid = (l + r) // 2
self.merge_sort(nums, l, mid)
self.merge_sort(nums, mid + 1, r)
temp = []
i, j = l, mid + 1
while i <= mid or j <= r:
if i > mid or (j <= r and nums[j] < nums[i]):
temp.append(nums[j])
j += 1
else:
temp.append(nums[i])
i += 1
nums[l: r + 1] = temp
def sortArray(self, nums: [int]) -> [int]:
self.merge_sort(nums, 0, len(nums) - 1)
return nums
# MergeSort in Python
def mergeSort(array):
if len(array) > 1:
r=len(array)//2
l=array[:r]
m=array[r:]
mergeSort(l)
mergeSort(m)
i=j=k=0
while i<len(l)and j<len(m):
if l[i]<m[j]:
array[k]=l[i]
i+=1
else:
array[k]=m[j]
j+=1
k+=1
while i<len(l):
array[k]=l[i]
i+=1
k+=1
while j<len(l):
array[k]=m[j]
k+=1
j+=1
# Print the array
def printList(array):
for i in range(len(array)):
print(array[i], end=" ")
print()
# Driver program
if __name__ == '__main__':
array = [6, 5, 12, 10, 9, 1]
mergeSort(array)
print("Sorted array is: ")
printList(array)