冒泡排序,选择排序,插入排序,快速排序,二分查找

冒泡排序(相邻比较):

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

选择排序(找最小):

  1. 首先在待排序序列中找到最小元素,存放到序列的起始位置
  2. 再从剩余未排序元素中继续寻找最小元素,放到已排序序列的末尾
  3. 以此类推,直到所有元素均排序完毕。

插入排序(从第一个开始排,已排序部分123 未排序部分5896):

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置后
  6. 重复步骤2~5

快速排序(挑选一个元素,分左右两个区域,大于该元素的放右边,小于该元素的放左边):

  1. 从数列中挑出一个元素,称为“基准”(pivot),通常选择第一个或最后一个元素。
  2. 扫描数列,以基准元素为比较对象,把数列分成两个区,小于基准元素的移动到基准元素前面,大的移到后面,相等的前后都可以。分区完成之后,基准元素就处于数列的中间位置。
  3. 再用同样的方法,递归地排序划分的两个区。

在分区过程中,为了不使用额外的空间,左右同时扫描基准之外的元素,在得到一个左边大于基准,右边小于基准的时候,把他们两个进行交换。

二分查找(找出中间位置,给定一个值与中间值比较,该值大于中间值就取右边,否则取左边):

假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置.

一。要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比。

二。如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置。

三。反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间值之后,所以我们需要改变的值是开始位置的值,此时开始位置的值应该是我们此时的中间位置,直到我们找到指定值。

四。或者中间值等于最初的起始位置,或结束位置(此时说明给定值未找到),下面我们来用代码实现~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值