題目描述:給定一個數組nums,將數組升序排序。
示例:
輸入:[5,2,3,1]
輸出:[1,2,3,5]
解法一:插入排序(超出)
思想:從數組的第二個數開始與前一個數進行比較,如果後面的數比前面的數小,則進行交換。算法複雜度爲O()
題解:
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:
left_num.append(num)
else:
right_num.append(num)
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
暫時先更新這三種,後續再添加。