每日刷題——leetcode912.排序數組

題目描述:給定一個數組nums,將數組升序排序。

示例:

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

解法一:插入排序(超出)
思想:從數組的第二個數開始與前一個數進行比較,如果後面的數比前面的數小,則進行交換。算法複雜度爲O(n2n^2)

題解:

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

暫時先更新這三種,後續再添加。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章