【算法基础】排序算法

一.排序

1.冒泡排序
  1. 原理
    有一列数据,从第一个数开始,第一个和第二个进行比较,如果第一个大就交换,如果第二个大就不变,再第二个和第三个比较,一次类推,第二轮是从第一个数开始比到倒数第二个数,第三轮是从第一个数比到倒数第三个数.以此类推.

  2. 代码

def bubble(nums):
    for j in range(len(nums)-1,0,-1):  # 7,6,5,4,3,2,1
        for i in range(j):
            if nums[i]>nums[i+1]:
                nums[i],nums[i+1]=nums[i+1],nums[i]
    return nums
nums=[2,5,6,3,4,9,1]
print(bubble(nums))
  1. 解析
    内层循环表示比较的范围,外层循环用来表示比较的轮数
2.选择排序
  1. 原理
    在未排序的列表中,找出一个最大(小)值,通常找的最大值或者最小值就是列表的第一个元素位置
    然后在未排序的列表中依次找出最大(小)元素位置,
    跟假设的位置进行比较,如果原有位置与找到的最大(小)位置发生改变
    则进行交换

  2. 代码

def select(nums):
    for i in range(0,len(nums)):
        for j in range(i):
            if nums[i]<nums[j]:
                nums[i],nums[j]=nums[j],nums[i]
    return nums

nums=[1,5,3,7,4,9]
print(select(nums))
  1. 解释
    内层循环表示每一轮的第一个数和后面的数依次进行比较,外层循环用来实现内层循环开始的第一个数.
3.插入排序
  1. 原理
    通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

  2. 代码实现

def insert(nums):
    for i in range(1,len(nums)):
        for j in range(0,i):
            if nums[i]<nums[j]:
                nums[i],nums[j]=nums[j],nums[i]
    return nums
nums=[1,5,3,7,4,9]
print(insert(nums))
  1. 解释
    从第n个数和前n-1个数依次进行比较,外层用来表示从第一个数到第n-1个数,内层用来表示前n-1个数.
4.快速排序
  1. 原理
    从数列中挑出一个元素,称为"基准";
    重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面;在这个分区结束之后,该基准就处于数列的中间位置;
    递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值