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

题目描述:给定一个数组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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值