題目描述:給定乙個陣列nums,將陣列公升序排序。
示例:
輸入:[5,2,3,1]
輸出:[1,2,3,5]
解法一:插入排序(超出)
思想:從陣列的第二個數開始與前乙個數進行比較,如果後面的數比前面的數小,則進行交換。演算法複雜度為o(n
2n^2
n2)題解:
def sortarray(self, nums):
for i in range(1,len(nums)):
for j in range(i, 0, -1):
if nums[j] < nums[j-1]:
nums[j], nums[j-1] = nums[j-1], nums[j]
else:
break
return nums
解法二:快速排序
思想:找出陣列中的乙個數作為關鍵資料(通常是處於中間的資料),然後遍歷陣列中的其他數,如果小於該數則放入該數的左邊,大於該數則放入右邊。
題解:
def sortarray(self, nums):
if not nums or len(nums) ==1:
return nums
else:
left_num =
right_num =
mid_num = nums[len(nums)//2]
nums.remove(mid_num)
for num in nums:
if num < mid_num:
else:
return self.sortarray(left_num) + [mid_num] + self.sortarray(right_num)
解法三:使用python內建函式sorted
思想:sorted函式是python中用於排序的函式
題解:
def sortarray(self, nums):
sort_nums = sorted(nums)
return sort_nums
暫時先更新這三種,後續再新增。 leetcode 912 排序陣列
給定乙個整數陣列 nums,將該陣列公升序排列。示例 1 輸入 5,2,3,1 輸出 1,2,3,5 示例 2 輸入 5,1,1,2,0,0 輸出 0,0,1,1,2,5 1 a.length 10000 50000 a i 50000實際上python自帶的sort函式是最好的,用了timesor...
leetcode 912 排序陣列
這是乙個排序題,都是老生常談的東西了,之前用的排序演算法都是通過比較大小進行排序,貼一下不用比較大小的計數排序的 計數排序的思想是 對於陣列中乙個需要排序的數字x來說,算出陣列中小於等於它的數字個數便可得出該數在有序陣列中的位置。該演算法只適用於整數陣列,時間複雜度為o n k o n k o n ...
LeetCode912 使用堆排序解決
給你乙個整數陣列 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 public class heapsort sortarray nums for int i nums ...