数据结构——用python实现排序算法
来源:互联网 发布:淘宝联盟可以赚钱吗 编辑:程序博客网 时间:2024/05/29 10:26
用python实现各种数据结构,是不是EXCITING?本文实现了基础排序算法
代码较为简单,按顺序如下:
1.插入排序
#coding=utf8L=[223, 85, 232, 171, 215, 229, 12, 58, 219, 143, 61, 152, 32, 42, 199, 82, 252, 217, 106, 240, 202, 40, 180, 292, 235, 214, 116, 76, 298, 33, 132, 185, 44, 31, 73, 110, 201, 174, 127, 108, 251, 83, 172, 36, 93, 88, 233, 218, 30, 18, 262, 293, 263, 277, 100, 48, 246, 98, 75, 170, 138, 278, 134, 297, 78, 226, 206, 176, 28, 133, 203, 50, 222, 123, 230, 285, 105, 189, 238]'''Created on 2016年10月2日@author: sx'''def charu(L): m=0 g=0 print(len(L)) for i in range(1,len(L)): m=m+1 x=L[i] j=i while j>0 and L[j-1]>x: m=m+1 L[j]=L[j-1] j=j-1 g=g+1 L[j]=x print(L) print(m,g,m+g) #方法简单直接又暴力,不错不错 charu(L)
2、冒泡排序
#encoding=UTF-8'''Created on 2016年10月2日@author: sx'''L=[223, 85, 232, 171, 215, 229, 12, 58, 219, 143, 61, 152, 32, 42, 199, 82, 252, 217, 106, 240, 202, 40, 180, 292, 235, 214, 116, 76, 298, 33, 132, 185, 44, 31, 73, 110, 201, 174, 127, 108, 251, 83, 172, 36, 93, 88, 233, 218, 30, 18, 262, 293, 263, 277, 100, 48, 246, 98, 75, 170, 138, 278, 134, 297, 78, 226, 206, 176, 28, 133, 203, 50, 222, 123, 230, 285, 105, 189, 238]# def suiji(i):def maopao(L): m=0 for i in range(0,len(L)): m=m+1 for j in range(i+1,len(L)): m=m+1 if L[i]>L[j]: print(L[i],L[j]) swap(L,i,j) print(L) m=m+1 print(m)# 冒泡排序好像打擂台def swap(L,i,j): q=L[j] L[j]=L[i] L[i]=qmaopao(L)
3、冒泡排序优化算法
#encoding=UTF-8'''Created on 2016年10月2日@author: sx'''import randomL=[223, 85, 232, 171, 215, 229, 12, 58, 219, 143, 61, 152, 32, 42, 199, 82, 252, 217, 106, 240, 202, 40, 180, 292, 235, 214, 116, 76, 298, 33, 132, 185, 44, 31, 73, 110, 201, 174, 127, 108, 251, 83, 172, 36, 93, 88, 233, 218, 30, 18, 262, 293, 263, 277, 100, 48, 246, 98, 75, 170, 138, 278, 134, 297, 78, 226, 206, 176, 28, 133, 203, 50, 222, 123, 230, 285, 105, 189, 238]# def suiji(i):# s=[]# for i in range(0,i):# q=random.randint(10,300)# if q not in s:# s.append(q)# print(s)def maopao(L): m=0 g=0 for i in range(0,len(L)): m=m+1 for j in range(-len(L)+1,-i): m=m+1 k=-j# if L[k]<L[i]:# print(L[i],L[k])# swap(L,i,k)# print(L)# m=m+1 o=k-1 if L[k]<L[o]: print(L[j],L[o]) swap(L,j,o) print(L) g=g+1 print(m,g)# 冒泡排序好像打擂台def swap(L,i,j): q=L[j] L[j]=L[i] L[i]=qmaopao(L)
4、冒泡排序再优化
#encoding=UTF-8'''Created on 2016年10月2日@author: sx'''import randomL=[223, 85, 232, 171, 215, 229, 12, 58, 219, 143, 61, 152, 32, 42, 199, 82, 252, 217, 106, 240, 202, 40, 180, 292, 235, 214, 116, 76, 298, 33, 132, 185, 44, 31, 73, 110, 201, 174, 127, 108, 251, 83, 172, 36, 93, 88, 233, 218, 30, 18, 262, 293, 263, 277, 100, 48, 246, 98, 75, 170, 138, 278, 134, 297, 78, 226, 206, 176, 28, 133, 203, 50, 222, 123, 230, 285, 105, 189, 238]# def suiji(i):# s=[]# for i in range(0,i):# q=random.randint(10,300)# if q not in s:# s.append(q)# print(s)def maopao(L): m=0 f=1 g=0 for i in range(0,len(L)): if f==1: m=m+1 f=0 for j in range(-len(L)+1,-i): m=m+1 k=-j o=k-1 if L[k]<L[o]: print(L[i],L[o]) swap(L,o,k) f=1 print(L) g=g+1 elif L[k]==L[o]: f=1 else: pass print(m,g)# 考虑一种情况 局部调整结束def swap(L,i,j): q=L[j] L[j]=L[i] L[i]=qmaopao(L)
5、希尔排序
'''Created on 2016年10月2日@author: sx'''L=[223, 85, 232, 171, 215, 229, 12, 58, 219, 143, 61, 152, 32, 42, 199, 82, 252, 217, 106, 240, 202, 40, 180, 292, 235, 214, 116, 76, 298, 33, 132, 185, 44, 31, 73, 110, 201, 174, 127, 108, 251, 83, 172, 36, 93, 88, 233, 218, 30, 18, 262, 293, 263, 277, 100, 48, 246, 98, 75, 170, 138, 278, 134, 297, 78, 226, 206, 176, 28, 133, 203, 50, 222, 123, 230, 285, 105, 189, 238]def ShellSort(L): t=len(L) m=0 g=0 while(t>1): t=int(t/12+1) i=0 m=m+1 while i<len(L): m=m+1# print(i) x=L[i] j=i while j>0 and L[j-t]>x: m=m+1 g=g+1 L[j]=L[j-t] j=j-t# while L[i]<L[i+t]:# L[i]=L[i+t]# print(L) L[j]=x i=i+t# print(L) print(m,g,m+g)ShellSort(L)
小慧慧还在睡觉~
6、选择排序
#encoding=UTF-8'''Created on 2016年10月2日@author: sx'''L=[223, 85, 232, 171, 215, 229, 12, 58, 219, 143, 61, 152, 32, 42, 199, 82, 252, 217, 106, 240, 202, 40, 180, 292, 235, 214, 116, 76, 298, 33, 132, 185, 44, 31, 73, 110, 201, 174, 127, 108, 251, 83, 172, 36, 93, 88, 233, 218, 30, 18, 262, 293, 263, 277, 100, 48, 246, 98, 75, 170, 138, 278, 134, 297, 78, 226, 206, 176, 28, 133, 203, 50, 222, 123, 230, 285, 105, 189, 238]# def suiji(i):L=[2,3,12,34,52,1,45]def xuanze(L): print(len(L)) m=0 g=0 for i in range(0,len(L)): min=i m=m+1 for j in range(i+1,len(L)): m=m+1 if L[min]>L[j]: min=j m=m+1 if min!=i: swap(L,i,min) print(L) g=g+1 print(m,g)# 选择排序和冒泡排序的不同:选择排序只需交换一次,冒泡排序需要比较且交换多次,选择排序比较的较多def swap(L,i,j): q=L[j] L[j]=L[i] L[i]=q xuanze(L)
0 0
- 数据结构——用python实现排序算法
- python数据结构——排序算法——八大排序算法的Python实现
- 数据结构-排序算法原理和Python实现
- 总结!python数据结构排序算法的实现
- 数据结构——排序查找算法实现
- 数据结构—排序算法
- 数据结构 — 排序算法
- 排序算法—冒泡排序算法分析与实现(Python)
- 排序算法—选择排序算法分析与实现(Python)
- 排序算法—希尔排序算法分析与实现(Python)
- 排序算法—堆排序算法分析与实现(Python)
- 排序算法—归并排序算法分析与实现(Python)
- 排序算法—快速排序算法分析与实现(Python)
- Python 数据结构与算法——归并排序
- Python 数据结构与算法——侏儒排序
- Python 数据结构与算法——拓扑排序
- Python 数据结构与算法 —— 插入排序
- 用python实现算法之——冒泡排序
- 自定义RadioGroup 实现选择
- 网络通信库Libevent的基本介绍
- eclipse 项目能运行但是还是一个红叉
- 蓝牙音频传输格式:ACC,SBC,APTX和LDAC
- 折腾一下框架请求的姿势
- 数据结构——用python实现排序算法
- 学习安卓时犯下的错误总结(持续更新ing)
- 感知机的收敛性(Novikoff定理)证明(原创)
- 使用基于Mybatis注解,利用反射和注解生成SQL语句
- 《算法概论》习题8.3
- 微信公众平台测试号
- mysql所有表查询
- 内存溢出WAS生成的文件javacore.***.txt 、heapdump.***.phd、core.***.dmp、Snap.***.trc说明
- 可做的题