题目描述:给定一个数组nums,将数组升序排序。
示例:
输入:[5,2,3,1]
输出:[1,2,3,5]
解法一:插入排序(超出)
思想:从数组的第二个数开始与前一个数进行比较,如果后面的数比前面的数小,则进行交换。算法复杂度为O(
n
2
n^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:
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
暂时先更新这三种,后续再添加。