选择排序、插入排序、冒泡排序python实现
选择排序的时间复杂度为O(n^2),是不稳定的排序
冒泡排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),平均情况下为O(n^2),是稳定的排序
插入排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),,平均情况下为O(n^2),是稳定的排序
1.选择排序
def selection(lista):
leng=len(lista);
for i in range(0,leng):
index=i;
min=lista[i];
for j in range(i,leng):
if lista[j]<min:
index=j;
min=lista[index];
tmp=lista[i];
lista[i]=lista[index];
lista[index]=tmp;
return lista;
2.插入排序
def insertion(lista): leng=len(lista);
for i in range(1,leng):
tmp=lista[i];
j=i;
while(j>0 and lista[j-1]>tmp):
lista[j]=lista[j-1];
j=j-1;
lista[j]=tmp;
return lista;
3.冒泡排序
def bubble(lista):
leng=len(lista);
for i in range(0,leng):
for j in range(1,leng-i):
if lista[j-1]>lista[j]:
lista[j-1],lista[j]=lista[j],lista[j-1];
return lista;
4.冒泡排序的改进
假设在某趟排序后数组已经有序,则排序完毕。
def bubble2(lista):
leng=len(lista);
flag=True;
while(flag):
flag=False;
for i in range(0,leng):
for j in range(1,leng-i):
if lista[j-1]>lista[j]:
lista[j-1],lista[j]=lista[j],lista[j-1];
flag=True;
return lista;
測试排序的代码:
lista=[5,3,1,4,7,9,8,2,6];
selection(lista); #选择排序
print lista
lista=[5,3,1,4,7,9,8,2,6];
insertion(lista); #插入排序
print lista
lista=[5,3,1,4,7,9,8,2,6];
bubble(lista); #冒泡排序
print lista
lista=[5,3,1,4,7,9,8,2,6];
bubble2(lista); #冒泡排序改进
print lista
选择排序、插入排序、冒泡排序python实现的更多相关文章
- python算法(一)基本知识&冒泡排序&选择排序&插入排序
本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...
- 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]
关于冒泡排序,选择排序,插入排序,希尔排序[资料收集] 以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...
- java 选择排序与冒泡排序
选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~ ...
- 算法——蛮力法之选择排序和冒泡排序c++实现
这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...
- java 选择排序、冒泡排序、折半查找
public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...
- Java-数据结构与算法-选择排序与冒泡排序
Java 选择排序与冒泡排序 1.DataSorter.java public class DataSorter { //冒泡排序法 //主要思路:按升序排序,数组元素两两比较,大的立即排后面 pub ...
- 算法 排序lowB三人组 冒泡排序 选择排序 插入排序
参考博客:基于python的七种经典排序算法 [经典排序算法][集锦] 经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...
- 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现
之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...
随机推荐
- JAVA大数类练手
今天突然看到了OJ上的大数类题目,由于学习了一点大数类的知识.果断水了6道题......都是非常基础的.就当的练手的吧. 学到的只是一些大数类的基本操作.以后多做点这样的题,争取熟练运用水大数题... ...
- 在redhat6.4下安装 Oracle® Database 11g Release 2
OS版本: 安装过程的相关信息: pdksh 安装好后根据需要设置oracle开机自启动http://www.cnblogs.com/softidea/p/3761671.html 设置环境变量NLS ...
- Android开发UI之补间动画-布局添加动画
布局添加动画 使用步骤: 1.获取到布局的id RelativeLayout ly=(RelativeLayout)findViewById(R.id.layout); 2.设置动画样式 ScaleA ...
- MySQL 线上配置文件
[client] port = 3306 socket = /tmp/mysql.sock default-character-set = utf8 [mysq ...
- HTML页面的导出,包括Excel和Word导出
//导出到Excel --- 全部导出,可以设置一些隐藏进行导出 protected void btnExport_Click(object sender, EventArgs e) { ...
- Chrome已原生支持“Chrome To Mobile”
完成PC和手机端Chrome的同gmail帐号绑定后,即可按如下操作进行: 已知在版本“19.0.1084.15”中,这个功能默认未开启,需要进入“chrome://flags/”进行手工启用(早几期 ...
- Vlan技术总结
VLAN主要有两个作用: vlan可以有效的控制广播域的范围 vlan可以分组设备,增强局域网的安全性(业务隔离) vlan的范围: 一共有4096个vlan,vlan 1为默认vlan.但其中vla ...
- 一致性哈希算法原理及Java实现
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...
- 超大型 LED 显示屏
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11574&courseid=0 题目 E. 超大型 L ...
- 【译】Selenium 2.0 WebDriver
Selenium WebDriver 注意:我们正致力于完善帮助指南的每一个章节,虽然这个章节仍然存在需要完善的地方,不过我们坚信当前你看到的帮助信息是精确无误的,后续我们会提供更多的指导信息来完 ...