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-数据结构-最全六种排序代码实现相关推荐

  1. python排序链表_python按照多个条件排序的方法

    python按照多个条件排序的方法 对tuple进行排序,先按照第一个元素升序,如果第一个元素相同,再按照第二个元素降序排列. L = [(12, 12), (34, 13), (32, 15), ( ...

  2. python 数据框缺失值_Python:处理数据框中的缺失值

    python 数据框缺失值 介绍 (Introduction) In the last article we went through on how to find the missing value ...

  3. python数据科学库_Python数据科学库

    python数据科学库 什么是数据科学? (What is Data Science?) We live in an information age, where the challenge is t ...

  4. python数据查询教程_Python数据可视化教程之基础篇

    经过学习之后,我总结了利用python实现可视化的三个步骤: 确定问题,选择图形 转换数据,应用函数 参数设置,一目了然 1 首先,要知道我们用哪些库来画图? matplotlib python中最基 ...

  5. python 写入第二列_python读写Excel表格的实例代码(简单实用)

    这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...

  6. python数据建模数据集_Python中的数据集

    python数据建模数据集 There are useful Python packages that allow loading publicly available datasets with j ...

  7. 成都python数据分析师培训_python数据分析师

    企业想要在竞争激烈的市场中胜出,决策的速度和反应的效率尤为重要.根据调查显示,75%的企业在面临拟定策略时,常常无法获得实时且有根据的决策信息.什么样的数据.要透过什么样的方法,才能且实时的转变成决策 ...

  8. python数据可视化库_python和r中用于数据可视化的前9个库

    python数据可视化库 In the rapidly growing world of today, when technology is expanding at a rate like neve ...

  9. python贪吃蛇程序_Python 实现 贪吃蛇大作战 代码分享

    感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核.媒体们除了之前竞相追捧<Pokemon Go>热闹了一把,似乎也听不到什么声音了.直到最近几天,突然听见好几人 ...

  10. python输出星号等腰三角形_python打印直角三角形与等腰三角形实例代码

    python打印直角三角形与等腰三角形实例代码 前言 本文通过示例给大家详细介绍了关于python打印三角形的相关,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1.直角三角形 #i ...

最新文章

  1. “天河二号”总工程师杜云飞谈星光超算应用平台设计
  2. 「倚天」一出,谁与争锋!全球首款5nm服务器芯片,业界最强
  3. java Export Excel POI 转
  4. python安装模块时读取超时_Windows在pip install tensorflow遇到的问题 一些python安装包的时候,超时问题以及权限问题...
  5. java中为什么要用json_Java中使用JSON
  6. [北京微软技术直通车]前端 Visual Studio Code 开发 Angular 与亿级 SQL Servern
  7. [转载]文本特征TFIDF权重计算及文本向量空间VSM表示
  8. Python中dataframe数据框中选择某一列非空的行
  9. 马斯克亲口承认:自动驾驶的开发难度超乎想象;小米再发1.2亿股权激励;Firefox Lite 已死|极客头条...
  10. 【分享】北漂五年,创业、字节、和阿里,现在回家
  11. linux 服务器加 SSH 黑名单
  12. 北京的一場演出-私人行程
  13. 计算机组成与结构1800题,最新版数据结构1800题含完整答案详解
  14. 电路设计中发光二极管用作指示灯时的限流电阻如何选择
  15. 网络云存储技术Windows server 2012 (项目十八 部署高可用链路的iSCSI(基于MPIO))
  16. 计算机fdd,FDD 文件扩展名: 它是什么以及如何打开它?
  17. 【图文并茂】U盘重装Win10方法教程
  18. 送给女朋友的圣诞节电子贺卡源代码,圣诞节快乐代码
  19. (18)python字符串的使用
  20. 离散数学·集合论【基本的集合恒等式】

热门文章

  1. (一)USB驱动程序_USB基础知识
  2. 【文献阅读】小目标检测综述:挑战,技术和数据集(M. MUZAMMUL等人,ACM,2021)
  3. monthy python爬虫_Python爬虫DOTA排行榜爬取实例(分享)
  4. 服务器无法显示url,apache中文_apache服务器解决url中文无法正常显示解决办法
  5. unturned服务器怎么自定义,《Unturned》机房服务器开服方法图文教程
  6. [转][读书笔记2]软件开发与如何开发软件的若干感想
  7. 计算广告笔记06-程序化交易广告
  8. CustomerApp的技术缺陷
  9. SOFABoot是蚂蚁金服开源的基于Spring Boot的研发框架
  10. 【电路】(1)串联式开关电源