算法之LOWB三人组之插入排序

插入排序

思想:类似于抽扑克牌,共有8张扑克牌,手里默认有一张,桌面上有7张,我们每次从桌面上抽一张和手里的牌进行比较,如果比手里的牌大,则直接放到手里的牌的后面,如果比手里的牌小,则放到手里的牌的前面,保证你放的每一次都会产生一个有序区。当牌完的时候,这8张牌也就排好了顺序。这就是插入排序

时间复杂度为O(n^2)

def insert_sort(li):
    for i in range(1, len(li)):
        tmp = li[i]  # 摸到的牌存一个变量中
        j = i - 1  # 模到的牌的前一位的下标
        # 当手里的牌比摸到的大的时候
        while li[j] > tmp and j >= 0:
            # 值向右移一位,
            li[j+1] = li[j]
            # 同时j的下标已经是tmp的下标,还要再上前一位
            j -= 1
        # 如果摸到的牌比手里的大,那么直接插入j的后一位
        li[j+1] = tmp
        print(li)
li = [3,2,4,1,5,7,9,6,8]
输出结果:

原文地址:https://www.cnblogs.com/lishi-jie/p/9916961.html

时间: 2024-10-12 18:42:06

算法之LOWB三人组之插入排序的相关文章

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

算法排序-lowB三人组

冒泡排序思路: 选择排序思路: 插入排序思路: 小结: 详细代码解释看下一篇 原文地址:https://www.cnblogs.com/52-qq/p/8398957.html

算法之LOWB三人组之选择排序

选择排序 思想是在一个列表中每次循环一遍,拿到最小值,接着再从剩下的无序区中继续拿最小值,如此循环,直到结束. # 最简单的一个选择排序,循环一个列表,拿到最小值,添加到一个新列表,之后在列表中删除这个最小值,继续再剩下的值中找最小值,往复循环. def select_sort_simple(li): new_li = [] for i in range(len(li)): min_val = min(li) new_li.append(min_val) li.remove(min_val) r

lowB 三人组

lowB 三人组 1.冒泡排序 2.选择排序 3.插入排序 1.冒泡排序 #冒泡排序法:竖看,一一比较,把大的放在最顶. 每两个相邻的数,如果前边的比后边大就交换这两个数. ''' 分析: 1.本来为无序区,没进行一趟冒泡,就有一位进入有序区,无序区就-1 2.正常来说:一个列表需要走N趟冒泡,但是,最后一位数其实是不需要走了,就是 N-1 趟 3.i 表示趟数,j 表示 箭头 2.时间复杂度:O(N2) ''' import random def bubble_sort(x): for i i

排序算法lowb三人组-插入排序

def insert_sort(li): for i in range(1, len(li)): # i表示摸到的牌的下标 tmp = li[i] # 摸到的牌 j = i - 1 while j >= 0 and li[j] > tmp: # 只要往后挪就循环 2个条件都得满足 # 如果 j=-1 停止挪 如果li[j]小了 停止挪 li[j+1] = li[j] j -= 1 # j位置在循环结束的时候要么是-1要么是一个比tmp小的值 li[j+1] = tmp 和冒泡相似,循环的时候遇

算法-lowb三人组

---恢复内容开始--- d定义: pandas是一个强大的Python数据分析的工具包. pandas是基于NumPy构建的. 安装方法: pip install pandas import pandas as pd pandas的主要功能 具备对其功能的数据结构DataFrame.Series 集成时间序列功能 提供丰富的数学运算和操作 灵活处理缺失数据 Series 定义:Series是一种类似于一位数组的对象,由一组数据和一组与之相关的数据标签(索引)组成. 创建方式: 创建方式: pd

算法1-排序LowB三人组

import random from timewrap import * @cal_time def bubble_sort(li): for i in range(len(li) - 1): # i 表示趟数 # 第 i 趟时: 无序区:(0,len(li) - i) for j in range(0, len(li) - i - 1): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1], li[j] @cal_time def bubble_sort_

排序算法lowb三人组-选择排序

def get_min_pos(li): min_pos = 0 for i in range(1, len(li)): if li[i] < li[min_pos]: min_pos = i return min_pos def select_sort(li): for i in range(len(li)-1): # n或者n-1趟 # 第i趟无序区范围 i~最后 min_pos = i # min_pos更新为无序区最小值位置 for j in range(i+1, len(li)): i

排序算法之NB三人组

快速排序 思路: 例如:一个列表[5,7,4,6,3,1,2,9,8], 1.首先取第一个元素5,以某种方式使元素5归位,此时列表被分为两个部分,左边的部分都比5小,右边的部分都比5大,这时列表变成了[2,1,4,3,5,6,7,9,8] 2.再对5左边进行递归排序,取5左边部分的第一个元素2,使2归位,这时5左边的部分变成了[1,2,4,3] 3.2归位后再对2右边5左边的部分即[4,3]进行排序,然后整个列表中5左边的部分就完成了排序 4.再使用递归方法对5右边的部分进行递归排序,直到把列表