每日刷题——leetcode912.排序数组

题目描述:给定一个数组nums,将数组升序排序。

示例:

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

解法一:插入排序(超出)
思想:从数组的第二个数开始与前一个数进行比较,如果后面的数比前面的数小,则进行交换。算法复杂度为O( n 2 n^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

暂时先更新这三种,后续再添加。

发布了19 篇原创文章 · 获赞 17 · 访问量 1459

猜你喜欢

转载自blog.csdn.net/weixin_43839651/article/details/105215247