算法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_2(li):
    for i in range(len(li) - 1):
        # i 表示趟数
        # 第 i 趟时: 无序区:(0,len(li) - i)
        change = False
        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]
                change = True
        if not change:
            return

li = list(range(10000))
# random.shuffle(li)
# print(li)
bubble_sort_2(li)
print(li)

冒泡

import random
from timewrap import *

@cal_time
def select_sort(li):
    for i in range(len(li) - 1):
        # i 表示趟数,也表示无序区开始的位置
        min_loc = i   # 最小数的位置
        for j in range(i + 1, len(li) - 1):
            if li[j] < li[min_loc]:
                min_loc = j
        li[i], li[min_loc] = li[min_loc], li[i]

li = list(range(10000))
random.shuffle(li)
print(li)
select_sort(li)
print(li)

选择

import random
from timewrap import *

@cal_time
def insert_sort(li):
    for i in range(1, len(li)):
        # i 表示无序区第一个数
        tmp = li[i] # 摸到的牌
        j = i - 1 # j 指向有序区最后位置
        while li[j] > tmp and j >= 0:
            #循环终止条件: 1. li[j] <= tmp; 2. j == -1
            li[j+1] = li[j]
            j -= 1
        li[j+1] = tmp

li = list(range(10000))
random.shuffle(li)
print(li)
insert_sort(li)
print(li)

插入

原文地址:https://www.cnblogs.com/fenglin0826/p/8447261.html

时间: 2024-10-11 10:48:33

算法1-排序LowB三人组的相关文章

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

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

算法排序-lowB三人组

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

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 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三人组-选择排序

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

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

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

插入排序 思想:类似于抽扑克牌,共有8张扑克牌,手里默认有一张,桌面上有7张,我们每次从桌面上抽一张和手里的牌进行比较,如果比手里的牌大,则直接放到手里的牌的后面,如果比手里的牌小,则放到手里的牌的前面,保证你放的每一次都会产生一个有序区.当牌完的时候,这8张牌也就排好了顺序.这就是插入排序 时间复杂度为O(n^2) def insert_sort(li): for i in range(1, len(li)): tmp = li[i] # 摸到的牌存一个变量中 j = i - 1 # 模到的牌

数据结构与算法小结——排序(三)

2. 选择排序 2.1 简单选择排序 简单选择排序的主要思想是,对第i个元素,将其与后面的n-i个元素作比较,用一个min变量存储这n-i+1个元素中的最小值的位置,比较完后将a[min]和a[i]交换(min != i).简单选择排序进行了(n^2)/2次比较,n次交换,交换的次数少. 其主要过程如图所示: 简单选择排序时间.空间复杂度.稳定性.适用场合如下: 从适用场合看到,虽然在基本的三个排序算法中,性能通常为:直接插入>冒泡>简单选择,但由于简单选择排序所需交换次数少,对于移动会花很大