python数据排序代码_Python-数据结构-最全六种排序代码实现
1.冒泡排序
def bubble_sort(alist):
"""冒泡排序"""
n = len(alist)
for j in range(n - 1):
"""j=0,1,2,n-2"""
count = 0
"""内层循环控制从头到尾的遍历"""
for i in range(0, n - 1 - j):
if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
count += 1
if 0 == count:
break
1.1冒泡排序的测试
if __name__ == '__main__':
li = [54, 26, 77, 17, 77, 31, 44, 55, 20]
print(li)
bubble_sort(li)
print(li)
2.选择排序
def selection_sort(alist):
n = len(alist)
""" 需要进⾏n-1次选择操作"""
for i in range(n - 1):
"""记录最⼩位置"""
min_index = i
"""从i+1位置到末尾选择出最⼩数据"""
for j in range(i + 1, n):
if alist[j] < alist[min_index]:
min_index = j
# 如果选择出的数据不在正确位置,进⾏交换
if min_index != i:
alist[i], alist[min_index] = alist[min_index], alist[i]
2.2选择排序的测试
alist = [54, 226, 93, 17, 77, 31, 44, 55, 20]
selection_sort(alist)
print(alist)
3.插入排序
def insert_sort(alist):
n = len(alist)
for j in range(1, n):
for i in range(j, 0, -1):
if alist[i] < alist[i - 1]:
alist[i], alist[i - 1] = alist[i - 1], alist[i]
else:
break
print(alist)
3.3插入排序的测试
if __name__ == '__main__':
li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print(li)
insert_sort(li)
4.快速排序
def quick_sort(alist, start, end):
if start >= end:
return
mid = alist[start]
left = start
right = end
"""left与right未重合,就向中间移动"""
while left < right:
while left < right and alist[right] >= mid:
right -= 1
alist[left] = alist[right]
while left < right and alist[left] <= mid:
left += 1
alist[right] = alist[left]
"""循环退出来后,left与right相遇,即left=right"""
alist[left] = mid
print(alist)
quick_sort(alist, start, left - 1)
quick_sort(alist, left + 1, end)
4.4快速排序测试
if __name__ == '__main__':
li = [54, 26, 93, 1, 7, 31, 44, 55, 20]
quick_sort(li, 0, len(li) - 1)
# print(li)
5.希尔排序
def shell_sort(alist):
n = len(alist)
gap = n // 2 # 4
while gap >= 1:
"j是从间隔gap到序列末尾的值"
for j in range(gap, n): # j=4 ,5,6,7,8
i = j # i=4 ,5,6,7,8
while (i - gap) >= 0: # i-gap=4-4,5-4,6-4,7-4,8-4
if alist[i] < alist[i - gap]: # 下标为i的和下标为i-gap的比较(alist[4]
alist[i], alist[i - gap] = alist[i - gap], alist[i] # 如果小于交换位置
else:
break # 如果大于,不交换位置
gap = gap // 2 # 减小间隔
5.5希尔排序测试
if __name__ == '__main__':
li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print(li)
shell_sort(li)
print(li)
6.归并排序
def merge_sort(alist):
"""归并排序"""
n = len(alist)
if 1 == n:
return alist
mid = n // 2
"""对左半部分进行归并排序"""
left_sorted_li = merge_sort(alist[:mid])
"""对右半部分进行归并排序"""
right_sorted_li = merge_sort(alist[mid:])
"""合并两个有序集合"""
left, right = 0, 0 # 设定两个游标,让其初始值为0
merge_sortted_li = [] # 设定一个空列边用于添加合并元素
left_n = len(left_sorted_li)
right_n = len(right_sorted_li)
while left < left_n and right < right_n:
if left_sorted_li[left] <= right_sorted_li[right]:
merge_sortted_li.append(left_sorted_li[left])
left += 1
else:
merge_sortted_li.append(right_sorted_li[right])
right += 1
merge_sortted_li += left_sorted_li[left:]
merge_sortted_li += right_sorted_li[right:]
return merge_sortted_li
6.6归并排序测试
if __name__ == '__main__':
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print("before sort: %s" % alist)
sorted_alist = merge_sort(alist)
print("after sort: %s" % alist)
print("sorted new list: %s" % sorted_alist)
python数据排序代码_Python-数据结构-最全六种排序代码实现相关推荐
- python排序链表_python按照多个条件排序的方法
python按照多个条件排序的方法 对tuple进行排序,先按照第一个元素升序,如果第一个元素相同,再按照第二个元素降序排列. L = [(12, 12), (34, 13), (32, 15), ( ...
- python 数据框缺失值_Python:处理数据框中的缺失值
python 数据框缺失值 介绍 (Introduction) In the last article we went through on how to find the missing value ...
- python数据科学库_Python数据科学库
python数据科学库 什么是数据科学? (What is Data Science?) We live in an information age, where the challenge is t ...
- python数据查询教程_Python数据可视化教程之基础篇
经过学习之后,我总结了利用python实现可视化的三个步骤: 确定问题,选择图形 转换数据,应用函数 参数设置,一目了然 1 首先,要知道我们用哪些库来画图? matplotlib python中最基 ...
- python 写入第二列_python读写Excel表格的实例代码(简单实用)
这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...
- python数据建模数据集_Python中的数据集
python数据建模数据集 There are useful Python packages that allow loading publicly available datasets with j ...
- 成都python数据分析师培训_python数据分析师
企业想要在竞争激烈的市场中胜出,决策的速度和反应的效率尤为重要.根据调查显示,75%的企业在面临拟定策略时,常常无法获得实时且有根据的决策信息.什么样的数据.要透过什么样的方法,才能且实时的转变成决策 ...
- python数据可视化库_python和r中用于数据可视化的前9个库
python数据可视化库 In the rapidly growing world of today, when technology is expanding at a rate like neve ...
- python贪吃蛇程序_Python 实现 贪吃蛇大作战 代码分享
感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核.媒体们除了之前竞相追捧<Pokemon Go>热闹了一把,似乎也听不到什么声音了.直到最近几天,突然听见好几人 ...
- python输出星号等腰三角形_python打印直角三角形与等腰三角形实例代码
python打印直角三角形与等腰三角形实例代码 前言 本文通过示例给大家详细介绍了关于python打印三角形的相关,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1.直角三角形 #i ...
最新文章
- “天河二号”总工程师杜云飞谈星光超算应用平台设计
- 「倚天」一出,谁与争锋!全球首款5nm服务器芯片,业界最强
- java Export Excel POI 转
- python安装模块时读取超时_Windows在pip install tensorflow遇到的问题 一些python安装包的时候,超时问题以及权限问题...
- java中为什么要用json_Java中使用JSON
- [北京微软技术直通车]前端 Visual Studio Code 开发 Angular 与亿级 SQL Servern
- [转载]文本特征TFIDF权重计算及文本向量空间VSM表示
- Python中dataframe数据框中选择某一列非空的行
- 马斯克亲口承认:自动驾驶的开发难度超乎想象;小米再发1.2亿股权激励;Firefox Lite 已死|极客头条...
- 【分享】北漂五年,创业、字节、和阿里,现在回家
- linux 服务器加 SSH 黑名单
- 北京的一場演出-私人行程
- 计算机组成与结构1800题,最新版数据结构1800题含完整答案详解
- 电路设计中发光二极管用作指示灯时的限流电阻如何选择
- 网络云存储技术Windows server 2012 (项目十八 部署高可用链路的iSCSI(基于MPIO))
- 计算机fdd,FDD 文件扩展名: 它是什么以及如何打开它?
- 【图文并茂】U盘重装Win10方法教程
- 送给女朋友的圣诞节电子贺卡源代码,圣诞节快乐代码
- (18)python字符串的使用
- 离散数学·集合论【基本的集合恒等式】
热门文章
- (一)USB驱动程序_USB基础知识
- 【文献阅读】小目标检测综述:挑战,技术和数据集(M. MUZAMMUL等人,ACM,2021)
- monthy python爬虫_Python爬虫DOTA排行榜爬取实例(分享)
- 服务器无法显示url,apache中文_apache服务器解决url中文无法正常显示解决办法
- unturned服务器怎么自定义,《Unturned》机房服务器开服方法图文教程
- [转][读书笔记2]软件开发与如何开发软件的若干感想
- 计算广告笔记06-程序化交易广告
- CustomerApp的技术缺陷
- SOFABoot是蚂蚁金服开源的基于Spring Boot的研发框架
- 【电路】(1)串联式开关电源