python学习08排序算法举例
''''''
'''
排序算法:前提是所有数按照从小到大的顺序排列。
1.冒泡算法
将第一数与第二个数比较大小,如果第一个数比第二个数大,则沉底(交换位置,使大数在小数后面,这个过程类似于大泡沉底的过程) '''
lst1=[33,77,99,55,66,44,22,00,88,11]
i=0
t=0
lst1_len=len(lst1)
while i<lst1_len:
j=1
while j<lst1_len-i:
if lst1[j-1]>lst1[j]:
t=lst1[j-1]
lst1[j-1]=lst1[j]
lst1[j]=t
j+=1
print('第'+str(i)+'次排序的结果为'+str(lst1))
i+=1
print(lst1) '''
2.选择法排序
把第一个数假设为max,依次与第二个数及以后的每个数去比较,如果后面的某个数比max大,就替换到max,一直比到最后一个,再把max给第一个数
'''
lst2=[33,77,99,55,66,44,22,00,88,11]
i=0
t=0
for i in range(len(lst2)):
j=i
max=lst2[j]
for j in range(len(lst2)):
if max<lst2[j]:
t=lst2[j]
lst2[j]=max
max=t
lst2[i]=max
print('第' + str(i) + '次排序的结果为' + str(lst2))
print(lst2) '''
3.二分法查找
这里介绍一种查找方法:对集合下标通过取中位数的方法获取对应元素值
但是前提是,列表里的元素要先有序排列好(从小到大或从大到小)
'''
lst3=[0, 11, 22, 33, 44, 55, 66, 77, 88, 99]
low=0
high=len(lst3)-1
find_value=12
flag=False
index =0
while low<high:
middle=int((low+high)/2)
if lst3[middle]<find_value:
low=middle+1
elif lst3[middle]>find_value:
high=middle-1
elif lst3[middle]==find_value:
index=middle
flag=True
break
else:
flag=False
break
if(flag==True):
print(str(find_value)+"在第"+str(index+1)+"个位置上");
else:
print("没找到!")
python学习08排序算法举例的更多相关文章
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
- Python实现常用排序算法
Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...
- python 的常见排序算法实现
python 的常见排序算法实现 参考以下链接:https://www.cnblogs.com/shiluoliming/p/6740585.html 算法(Algorithm)是指解题方案的准确而完 ...
- Python实现八大排序算法(转载)+ 桶排序(原创)
插入排序 核心思想 代码实现 希尔排序 核心思想 代码实现 冒泡排序 核心思想 代码实现 快速排序 核心思想 代码实现 直接选择排序 核心思想 代码实现 堆排序 核心思想 代码实现 归并排序 核心思想 ...
- 用python实现各种排序算法
最简单的排序有三种:插入排序,选择排序和冒泡排序.它们的平均时间复杂度均为O(n^2),在这里对原理就不加赘述了. 贴出源代码: 插入排序: def insertion_sort(sort_list) ...
- Python 一网打尽<排序算法>之先从玩转冒泡排序开始
1. 前言 所谓排序,就是把一个数据群体按个体数据的特征按从大到小或从小到大的顺序存放. 排序在应用开发中很常见,如对商品按价格.人气.购买数量--显示. 初学编程者,刚开始接触的第一个稍微有点难理解 ...
- 用 python 实现各种排序算法(转)
常见几种排序的算法: 归并排序 归并排序也称合并排序,是分治法的典型应用.分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并. 具体的归并排序就是,将一组无序数按n/2递归分解成只有一个 ...
- Java学习笔记——排序算法之快速排序
会当凌绝顶,一览众山小. --望岳 如果说有哪个排序算法不能不会,那就是快速排序(Quick Sort)了 快速排序简单而高效,是最适合学习的进阶排序算法. 直接上代码: public class Q ...
- python基础===八大排序算法的 Python 实现
本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一 ...
随机推荐
- 什么情况下JVM内存中的一个对象会被垃圾回收?
新生代满了会触发 Young GC,老年代满了会触发 Old GC.GC时会回收对象,那么具体是什么样的对象会被垃圾回收器回收呢? 可达性分析算法,判断是否被 GC Roots 引用 判断引用类型:强 ...
- 关于dll劫持我的奇思妙想(一)
0x00 前言 前段时间在研究着windows底层的一些东西,发现这个dll劫持一直没有做过,根据倾旋师傅的视频和文章做了一系列的研究,然后就突发来了兴致研究一些dll劫持提权. 0x01 了解 ...
- Java并发基础02. 传统线程技术中的定时器技术
传统线程技术中有个定时器,定时器的类是Timer,我们使用定时器的目的就是给它安排任务,让它在指定的时间完成任务.所以先来看一下Timer类中的方法(主要看常用的TimerTask()方法): 前面两 ...
- 1000行MySQL学习笔记,不怕你不会,就怕你不学!
Windows服务 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之
- PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分)
PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分) 7-40 奥运排行榜 (25 分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如 ...
- servlet web.xml 3.1版本的头信息
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmln ...
- binlog的作用及与redo log的区别
区别 二进制日志(bin log)会记录所有与MySQL数据库有关的日志记录,包括InnoDB.MyISAM.Heap等其他存储引擎的日志.而InnoDB存储引擎的重做日志只记录有关该存储引擎本身的事 ...
- php--一些新知识总结
魔术方法__invoke() 当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用 class Test { public function __invoke($a) { va ...
- VirtualBox的四种网络连接方式【转】
VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...
- Extjs简单的form+grid组合
采用的是Extjs4.2版本 http://localhost:49999/GridPanel/Index 该链接是本地连接,只是方便自己访问,读者无法正常访问. <script src=&qu ...