选择排序的时间复杂度为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实现的更多相关文章

  1. python算法(一)基本知识&冒泡排序&选择排序&插入排序

    本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...

  2. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  3. 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]

    关于冒泡排序,选择排序,插入排序,希尔排序[资料收集]  以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...

  4. java 选择排序与冒泡排序

    选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~ ...

  5. 算法——蛮力法之选择排序和冒泡排序c++实现

    这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...

  6. java 选择排序、冒泡排序、折半查找

    public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...

  7. C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...

  8. Java-数据结构与算法-选择排序与冒泡排序

    Java 选择排序与冒泡排序 1.DataSorter.java public class DataSorter { //冒泡排序法 //主要思路:按升序排序,数组元素两两比较,大的立即排后面 pub ...

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

    参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...

  10. 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现

    之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...

随机推荐

  1. POJ 1275 Cashier Employment(差分约束)

    http://poj.org/problem?id=1275 题意 : 一家24小时营业的超市,要雇出纳员,需要求出超市每天不同时段需要的出纳员数,午夜只需一小批,下午需要多些,希望雇最少的人,给出每 ...

  2. android 为activity添加optionMenu选项菜单

    <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android: ...

  3. PHP 系统常量及自定义常量

    __FILE__ 这个默认常量是 PHP 程序文件名.若引用文件 (include 或 require)则在引用文件内的该常量为引用文件名,而不是引用它的文件名. __LINE__ 这个默认常量是 P ...

  4. http://blog.csdn.net/carolzhang8406/article/details/7196011

    http://blog.csdn.net/carolzhang8406/article/details/7196011

  5. 浅谈HTTP中Get与Post的区别/HTTP协议与HTML表单(再谈GET与POST的区别)

    HTTP协议与HTML表单(再谈GET与POST的区别) GET方式在request-line中传送数据:POST方式在request-line及request-body中均可以传送数据. http: ...

  6. Ember.js demo7

    <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1 ...

  7. C#中的ODBC、OLEDB连接

      using System;using System.Collections.Generic;using System.Text;using System.Data.Odbc;using Syste ...

  8. 推荐GitHub上10 个开源深度学习框架

    推荐GitHub上10 个开源深度学习框架   日前,Google 开源了 TensorFlow(GitHub),此举在深度学习领域影响巨大,因为 Google 在人工智能领域的研发成绩斐然,有着雄厚 ...

  9. mac 修改密码后 频繁输入钥匙串问题修复方法

    就一句话就是 清空钥匙串缓存 下面是具体方法 进入硬盘目录-->资源库-->Keychains 删除里面的文件夹(这个文件夹里面有 keychain-2.db keychain-2.db- ...

  10. AS 学习笔记 加载数据

    AS2 加载本地(外部)数据.swf .png .jpg 等资源使用loadMovie() 加载库里面的mc 用 attachMovie AS3 加载本地(外部)数据 用 Loader 类来完成这个操 ...