选择排序、插入排序、冒泡排序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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SqlParameter CommandType.Text CommandType.StoredProcedure;[通俗易懂]

    SqlParameter CommandType.Text CommandType.StoredProcedure;[通俗易懂]publicintselect_for_updatexulie(Model.tiaominfotm){CommandTypect=CommandType.Text;stringsql=”select条目IDfrom作品条目表where作品ID=@作品ID”;SqlParamet…

    2022年7月26日
    3
  • 一文读懂BERT(原理篇)

    一文读懂BERT(原理篇)一文读懂BERT(从原理到实践)2018年的10月11日,Google发布的论文《Pre-trainingofDeepBidirectionalTransformersforLanguageUnderstanding》,成功在11项NLP任务中取得stateoftheart的结果,赢得自然语言处理学界的一片赞誉之声。本文是对近期关于BERT论文、相关文章、代码进…

    2022年5月25日
    37
  • Linux环境变量的设置和查看

    Linux环境变量的设置和查看一 Linux 的变量种类 nbsp nbsp nbsp nbsp nbsp 按变量的生存周期来划分 Linux 变量可分为两类 nbsp nbsp nbsp nbsp nbsp 1 永久的 需要修改配置文件 变量永久生效 nbsp nbsp nbsp nbsp nbsp 2 临时的 使用 export 命令声明即可 变量在关闭 shell 时失效 nbsp 二 设置变量的三种方法 1 在 etc profile 文件中添加变量 对所有用户生效 永久的 nbsp nbsp nbsp nbsp nbsp 用 VI 在文件 etc profile 文件

    2025年8月24日
    2
  • css中placeholder用法_html placeholder

    css中placeholder用法_html placeholder#iInput::-webkit-input-placeholder{color:blue;}#iInput:-moz-placeholder{color:blue;}#iInput:-ms-

    2022年8月1日
    6
  • java服务器后端框架_现在主流的java后端框架

    java服务器后端框架_现在主流的java后端框架Mars-javaMars是一个声明式API编程框架,可以帮助你很快的建立后端服务接口你可以专注在业务逻辑上,而不需要花太多的时间去写Controller和DAO同时我们依然支持传统ControllerPlayFrameworkplayframework是一个full-stack(全栈的)JavaWeb的应用框架,包括一个简单的无状态MVC模型,具有Hibernate的对象持续,一个基于Gro…

    2022年6月1日
    49
  • Android启动性能优化——闪屏及Splash页

    Android启动性能优化——闪屏及Splash页Android 启动性能优化 闪屏及 Splash 页本文我们将分析如何使用系统闪屏和 Splash 页来提升 APP 的启动性能 闪屏闪屏页是什么 启动闪屏不仅仅可以作为品牌宣传页 还能够减轻用户对启动耗时的感知 但是如果使用不恰当 将适得其反 当点击桌面图标启动 APP 的时候 程序会显示一个启动窗口 一直到页面的渲染加载完毕 如果程序的启动速度足够快 我们看的闪屏窗口停留显示的时间则会很短 但是当程序启动速度偏慢的时候 这个启动闪屏可以一定程度上减轻用户等待的焦虑感 避免用户过于轻易的关闭应用

    2025年6月3日
    3

发表回复

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

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