Bubble sort

Basic Method:

import random
nums = [random.randint(1,20) for _ in range(10)] #制作一个无序数字列表
print(nums)

length = len(nums)
for i in range(length - 1):
    for j in range(length - 1 - i):
        if nums[j] > nums[j + 1]:
            nums[j], nums[j + 1] = nums[j + 1], nums[j]

print(nums)

Method Optimization:

import random
nums = [random.randint(1,20) for _ in range(10)] #制作一个无序数字列表
print(nums)

length = len(nums)
flag = True
for i in range(length - 1):
    flag = False
    for j in range(length - 1 - i):
        if nums[j] > nums[j + 1]:
            nums[j], nums[j + 1] = nums[j + 1], nums[j]
            flag = True
    if not flag:
        break

print(nums)

Selection sort

Basic Method

import random

nums = [random.randint(1, 20) for _ in range(10)] #制作一个无序数字列表
print(nums)

length = len(nums)
for i in range(length - 1):
    minindex = i
    for j in range(i+1, length):
        if nums[j] < nums[minindex]:
            minindex = j
    else:
        if minindex != i:
            nums[i], nums[minindex] = nums[minindex], nums[i]

print(nums)

Method Optimization 1

import random

nums = [random.randint(1, 20) for _ in range(10)] #制作一个无序数字列表
print(nums)

length = len(nums)
for i in range(length // 2):
    minindex = i
    maxindex = ~i
    for j in range(i+1, length-i):
        if nums[j] < nums[minindex]:
            minindex = j
        if nums[~j] > nums[maxindex]:
            maxindex = ~j
    if nums[maxindex] == nums[minindex]:
        break
    if minindex != i:
        nums[i], nums[minindex] = nums[minindex], nums[i]
        if maxindex == i - length:
            maxindex = minindex - length
    if maxindex != ~i:
        nums[maxindex], nums[~i] = nums[~i], nums[maxindex]

print(nums)

Method Optimization 2

import random

nums = [random.randint(1, 20) for _ in range(10)] #制作一个无序数字列表
print(nums)

length = len(nums)
for i in range(length // 2):
    minindex = i
    maxindex = i
    for j in range(i+1, length-i):
        if nums[j] < nums[minindex]:
            minindex = j
        elif nums[j] > nums[maxindex]:
            maxindex = j
    if nums[maxindex] == nums[minindex]:
        break
    if minindex != i:
        nums[i], nums[minindex] = nums[minindex], nums[i]
        if maxindex == i:
            maxindex = minindex
    if maxindex != ~i:
        nums[maxindex], nums[~i] = nums[~i], nums[maxindex]

print(nums)

冒泡排序和选择排序(bubble sort and selection sort)的更多相关文章

  1. 选择排序的php实现 Selection Sort

    选择排序Selection Sort的PHP实现,安全按照算法所写. 同一排序算法下,需要趟数最多的数列是什么数列呢?思考中. 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序 ...

  2. JavaScript算法(冒泡排序、选择排序与插入排序)

    冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...

  3. 冒泡排序和选择排序(Go语言实现)

    冒泡排序和选择排序是排序算法中比较简单和容易实现的算法.冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端.而选择排序的思想也很直观:每一次排序 ...

  4. Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析

    前言:排序在算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次.商城商品销量排名.新闻的搜索热度排名等等.也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天, ...

  5. Java 快速排序法 冒泡排序法 选择排序法 插入排序法

    1.快速排序的原理: 选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的). 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果 ...

  6. js中常见的数组排序算法-冒泡排序和选择排序

    reverse( )  数组逆序   // reverse() 数组逆序 var arr = ["边境牧羊犬", "德国牧羊犬", "金毛" ...

  7. php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

    这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式 ...

  8. 插入排序、冒泡排序、选择排序、希尔排序、高速排序、归并排序、堆排序和LST基数排序——C++实现

    首先是算法实现文件Sort.h.代码例如以下: <pre name="code" class="java">/* * 实现了八个经常使用的排序算法: ...

  9. 【排序算法】——冒泡排序、选择排序、插入排序、Shell排序等排序原理及Java实现

    排序 1.定义: 所谓排序,即是整理文件中的内容,使其按照关键字递增或递减的顺序进行排列. 输入:n个记录,n1,n2--,其对应1的关键字为k1,k2-- 输出:n(i1),n(i2)--,使得k( ...

随机推荐

  1. [转帖]【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别

    https://www.cnblogs.com/sxdcgaq8080/p/7487369.html 其实不同的 openjdk的版本也不一样. atlassian说AdoptOpenJDK我们测试充 ...

  2. 不同浏览器之间的javascript和css兼容性问题

    po主手头维护的网站是上世纪的作品.当时约摸ie所占的市场份额相当大,以至于开发人员都没有考虑到浏览器兼容性问题(这不科学!).怎奈po主是个强迫症阿.最近在修改的时候,还是没忍住,把兼容性问题解决了 ...

  3. HDU 2041 DP

    URL:https://vjudge.net/problem/HDU-2041 简单DP,因为每次只能走1或者2阶,所以当走到第i阶的时候(i>=4),那么它的前一种状态只可能是i-1和i-2, ...

  4. vue : 无法加载文件 C:\Users\lihongjie\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 htt ps:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + vue init webpack vue_p

    以管理员方式打开powershell 运行命令:set-ExecutionPolicy RemoteSigned 出现: 执行策略更改执行策略可帮助你防止执行不信任的脚本.更改执行策略可能会产生安全风 ...

  5. python_0基础开始_day07

    第七节 1,基础数据类型补充 str: print(str.capitalize()) —— 首字母大写 print(str.title()) —— 每个单词的首字母大写 print(str.swap ...

  6. 剑指offer-和为S的连续正数序列-知识迁移能力-python

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...

  7. Auto-increment 自动增长

    Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto- ...

  8. luogu题解 P1462 【通往奥格瑞玛的道路】二分+spfa

    题目链接: https://www.luogu.org/problemnew/show/P1462 思路: 又是一道水题,很明显二分+最短路 而且这道题数据非常水,spfa有个小错误居然拿了91分还比 ...

  9. uploadify 上传文件插件

    今天在项目中要用到文件上传功能时,想借助Jquery方式来实现,于是想到用uploadify插件来实现.不经意间在网上看到了一遍关于这个插件的用法,写的很好.在这里就分享给大家,希望对大家有帮助.以下 ...

  10. webpack4 打包

    1. 基本安装及命令 npm config set registry https://registry.npm.taobao.org     //  淘宝镜像npm install webpack-c ...