选择排序、插入排序、冒泡排序python实现

选择排序、插入排序、冒泡排序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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119010.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Spring集成Hibernate 理解LocalSessionFactoryBean[通俗易懂]

    Spring集成Hibernate 理解LocalSessionFactoryBean[通俗易懂]随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。from:https://blog.csdn.net/leroy008/article/details/7704601LocalSessionFactoryBean(org.springframework.or…

    2022年9月7日
    0
  • pycharm2022.01.12激活码[最新免费获取][通俗易懂]

    (pycharm2022.01.12激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月13日
    278
  • 不要再问芝士和奶酪有什么区别了!一次解释清楚「建议收藏」

    不要再问芝士和奶酪有什么区别了!一次解释清楚「建议收藏」在西方,奶酪绝对是全民食物,无论男女老少,很多都是“没奶酪会死星人”。两位世界知名大佬都曾对它发表过经典言论,丘吉尔在二战时说,一个为世界提供300种以上奶酪的国家是不应该灭亡的。而戴高乐总统的看法则是:“要统治一个拥有600种奶酪的国家,是很困难的。”    但在中国,它的接受面好像还真没那么广,如果深究起来是有很多方面的原因,包括历史、地域、文化等,说起来也是太复杂,还有奶酪的

    2022年4月20日
    57
  • menuconfig过程详解

    menuconfig过程详解makefilemenuconfig过程讲解当我们在执行makemenuconfig这个命令时,系统到底帮我们做了哪些工作呢?这里面一共涉及到了一下几个文件我们来一一讲解Linux内核根目录下的scripts文件夹arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件Linux内核根目录下的makefile文件、各层目录下的make

    2022年5月29日
    131
  • Qt 资料大全[通俗易懂]

    Qt 资料大全[通俗易懂]全网最强整理,Qt官网、编码风格、GitHub&Third-Party、社区论坛、博客、书籍等资源,应有尽有。

    2022年7月17日
    21
  • java数组的三种初始化方式

    java数组的三种初始化方式2018年4月3日Java语言中数组必须先初始化,然后才可以使用。所谓初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值。注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值:           基本数据类型的整数类型(byte、short、int、long)默认值是0;           基本数据类型的浮点类型(float、double)默认值是0.0; …

    2022年5月5日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号