C解OJ题--丢失的数字(冒泡排序来解)


前言:
  这道题我先用了一种排序的方式来进行求解,目的是巩固排序算法。当然对于更加高效的方式,我也会采纳学习。


原题如下:

在这里插入图片描述
  给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

题意:
  一个数组有 n 个数据,数组中数据值的范围在[0,n]这个区间内。找出在这个数组中属于这个范围但是没有出现在该数组中的数字,名为丢失的数字。


解题思路:
思路一: 从数组本身出发,如果我们将这组数据进行从小到大排序,那问题将会变得很简单,只需要逐一进行判断即可。但是这种方式的时间复杂度比较高。
思路二: 从区间范围出发,不需要对数组数据进行排序。假设数组中不存在丢失的数字,那么数组数据的总和将会和区间 [0 ,n] 中的所有整数之和是一样的。所以,计算出区间 [0,n] 所有整数之和 数组数据的总和 = 丢失的数字。但是这种方式得考虑可能会出现越界的情况。

  虽然思路二比思路一更加高效,但是毕竟是排序专题嘛,我们着重分析思路一。目的是巩固排序相关的经典算法。对于思路二其实也就是一个数学问题,在后面会附加上详细代码。
  那用什么排序方法来对这组数据进行排序。在这里我选择 交换排序 - - 冒泡排序


冒泡排序思想:
  对存放原始数据的数组,按从前往后的方向进行多次扫描,每一次扫描称为一趟。当发现比较的两个数据发生逆序时,就将这两个数据互换,直到整个数据有序。每一趟都会选择出一个满足条件的放到后面。通过这样的方式数据由无序就慢慢变为有序了。

其实冒泡排序很简单,我们只需要

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值