排序算法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

和冒泡相似,循环的时候遇到比自己小的就交换值

原文地址:https://www.cnblogs.com/Treasuremy/p/10432190.html

时间: 2024-11-13 15:07:58

排序算法lowb三人组-插入排序的相关文章

排序算法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

排序算法(三)插入排序

1.基本思想 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入. 插入排序非常类似于整扑克牌,在开始摸牌时,左手是空的,牌面朝下放在桌上.接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上.为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较.无论什么时候,左手中的牌都是排好序的. 如果输入数组已经是排好序的话,插入排序出现最佳情况,其运行时间是输入规模的一个线性函数.如果输入数组是逆序排列的,将出现最坏情况.平均情况与最坏情况一样,其

排序算法(三)——插入排序及改进

插入排序 基本思想 在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数找到相应位置并插入,使得这n个数也是排好顺序的.如此反复循环,直到全部排好顺序. java实现 //插入排序 public void insertionSort(){ int len = array.length; int counter = 1; for(int i=1;i<len;i++){ int temp = array[i]; //存储待排序的元素值 int insertPo

排序算法(三)——插入排序

插入排序算法思想: 将无序序列最左端的元素插入到有序序列中 示例代码: #include <iostream> using namespace std; void swap(int &a,int &b){ int temp=a; a=b; b=temp; return;}void Insert_sort(int list[],int begin,int end){ for(int i=begin+1;i<=end;i++) { int num=list[i]; int j

排序算法Nb三人组-快速排序

核心思想: 将列表中第一个元素拿出来,放到一边,左右两个循环,左面的大于拿出来的数,就把他挪到右面, 右面的小于拿出来的数就把他放在左面,这是列表被第一个元素''分''为两个列表,在对两个列表进行同样的操作进行递归. def partition(li, left, right): tmp = li[left] while left < right: while left < right and li[right] >= tmp: right -= 1 li[left] = li[righ

算法-lowb三人组

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

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

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

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

算法整理(三):插入排序

插入排序很简单,就像打扑克.手里有个牌4,再来一张牌5就本能的放到第一个牌的右边.如果来了个3就从右往左扫描,只要左边的比这个待插入数字大就交换. 插入排序是一种稳定的排序方法,时间复杂度O(n*n),空间复杂度O(1),最好的情况下时间复杂度为O(1).即本来就是一个有序或者相等的数组,则只需比较n-1次即可.下为源码,只需三行代码即可. //============================================================================