1.选择排序

不断找到最小的(找最大的也是可以的)

首先拿到第一个,然后发现比它小的,记住下标。循环一轮,找到最小的数的位置 和 最左边的数交换位置

然后从第二个开始....和第二个交换位置,循环最后变得有序

#coding=utf-8

def select_sort(list):
for i in range(len(list)):
min = i
for j in range(i+1,len(list)):
if list[min]>list[j]:
min = j
list[min], list[i] = list[i], list[min]
return list a = select_sort([1,4,2,8,6,9,10])
print(a)

2.冒泡排序

首先拿到第一个元素,和它第二个作比较,把较大的数放在右边

第二个再和第三个比较。。。。一轮下来,最后一个就是最大的数

再一轮,倒数第二个也变成有序的......最终都变成有序的

def bubble_sort(lists):
count = len(lists)
for i in range(0,count):
for j in range(i+1,count):
if lists[i] > lists[j]:
lists[i], lists[j] = lists[j], lists[i]
return lists a = bubble_sort([3,2,1,6,9,5])
print(a)
def bubble_sort(list):
for i in range(len(list)):
for j in range(len(list)-i-1):
if list[j] > list[j+1]:
list[j], list[j+1] = list[j+1], list[j]
return list a = bubble_sort([3,2,10,6,9,5])
print(a)

3.插入排序

起始有一个值,在随便插入一个值,然后两者比较,看是否需要交换位置,两个值就变得有序了

依此类似再逐渐插入值,最后变成有序序列

def insert_sort(list):
for i in range(1,len(list)):
for j in range(0,i):
if list[i]<list[j]:
list[i], list[j] = list[j],list[i]
return list a = insert_sort([2,1,5,4,6,7,3])
print(a)
def insert1_sort(list):
for i in range(1, len(list)):
key = list[i]
j = i-1
while j >= 0:
if list[j] > key:
list[j+1] = list[j]
list[j] = key
j -= 1
return list a1 = insert1_sort([2,1,5,4,6,7,3])
print(a1)

Python常用算法(一)的更多相关文章

  1. 第四百一十四节,python常用算法学习

    本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机 ...

  2. Python常用算法

    本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机 ...

  3. Python 常用算法记录

    一.递归 汉诺塔算法:把A柱的盘子,移动到C柱上,最少需要移动几次,大盘子只能在小盘子下面 1.当盘子的个数为n时,移动的次数应等于2^n – 1 2.描述盘子从A到C: (1)如果A只有一个圆盘,可 ...

  4. python常用算法学习(3)

    1,什么是算法的时间和空间复杂度 算法(Algorithm)是指用来操作数据,解决程序问题的一组方法,对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但是在过程中消耗的资源和时间却会有很大 ...

  5. python常用算法学习(4)——数据结构

    数据结构简介 1,数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成.简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中.比如:列表,集合与字 ...

  6. python 常用算法

    算法就是为了解决某一个问题而采取的具体有效的操作步骤 算法的复杂度,表示代码的运行效率,用一个大写的O加括号来表示,比如O(1),O(n) 认为算法的复杂度是渐进的,即对于一个大小为n的输入,如果他的 ...

  7. python 常用算法学习(2)

    一,算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求 ...

  8. python 常用算法学习(1)

    算法就是为了解决某一个问题而采取的具体有效的操作步骤 算法的复杂度,表示代码的运行效率,用一个大写的O加括号来表示,比如O(1),O(n) 认为算法的复杂度是渐进的,即对于一个大小为n的输入,如果他的 ...

  9. python常用算法(6)——贪心算法,欧几里得算法

    1,贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的的时在某种意义上的局部最优解. 贪心算法并不保证会得到最优解,但 ...

  10. python常用算法(7)——动态规划,回溯法

    引言:从斐波那契数列看动态规划 斐波那契数列:Fn = Fn-1 + Fn-2    ( n = 1,2     fib(1) = fib(2) = 1) 练习:使用递归和非递归的方法来求解斐波那契数 ...

随机推荐

  1. LeetCode(68)-Compare Version Numbers

    题目: Compare two version numbers version1 and version2. If version1 > version2 return 1, if versio ...

  2. wait和notify的理解与使用

    1.对于wait()和notify()的理解 对于wait()和notify()的理解,还是要从jdk官方文档中开始,在Object类方法中有: void notify() Wakes up a si ...

  3. js中用var与不用var的区别

    var num = 1: 是在当前域中声明变量. 如果在方法中声明,则为局部变量(local variable):如果是在全局域中声明,则为全局变量. 而 num = 1: 事实上是对属性赋值操作.

  4. Spring中对象和属性的注入方式

    一:Spring的bean管理 1.xml方式 bean实例化三种xml方式实现 第一种 使用类的无参数构造创建,首先类中得有无参构造器(重点) 第二种 使用静态工厂创建 (1)创建静态的方法,返回类 ...

  5. Map 遍历分析

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...

  6. 第四章:4.2MySQL 权限系统介绍

    4.2.1 权限系统简介 MySQL 的权限系统在实现上比较简单,相关权限信息主要存储在几个被称为granttables 的系统表中,即: mysql.User,mysql.db,mysql.Host ...

  7. Vue 仿B站滑动导航

    仿照B站制作的滑动导航功能,进行了部分优化,例如可定制默认选中元素,并将选中元素居中显示,可动态更改数据,可定制回调函数取的下标和选中元素内容,可根据需求制作N级联动 已开发成插件,使用方法与源码请前 ...

  8. HttpDNS的坑以及一个针对安卓不太完善的测试方案

    背景:单位因为域名劫持(具体表象是某个地区的用户ping不通域名或者因为DNS解析的ip跨网段导致访问速度很慢)需要运维经常去定位,于是提出了httpDNS方案. 想法是美好的,现实是残酷的.没引入这 ...

  9. RDC去省赛玩前の日常训练 Chapter 2

    2018.4.9 施展FFT ing! 马上就要和前几天学的斯特林数双剑合璧了!

  10. 2018山东省ACM省赛G题-Game

    Alice and Bob are playing a stone game. There are n piles of stones. In each turn, a player can remo ...