zoukankan      html  css  js  c++  java
  • 选择排序、插入排序、冒泡排序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


  • 相关阅读:
    分工的好处
    这是真正的随笔,无论形式还是内容。。。
    javascript 检查函数传入的实参个数和期待的形参个数是否相同的方法
    JS中比较难记的函数
    3.0 Basic Usage of Class
    0.0 Visual Studio
    2.0 Exercise of Basic Statements
    5.0 String And RegularExpressions.
    1.0 HelloWorld
    dell mini9 fluxbox 声卡的安装 和 屏幕分辨率和刷新率的调节
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3842811.html
Copyright © 2011-2022 走看看