无序表查找

def seq_search(lst, key):
found = False
pos = 0
while pos < len(lst) and not found:
if lst[pos] == key:
found = True
else:
pos = pos + 1
return found

顺序表二分查找

def ordered_seq_search(lst, key):
if len(lst) == 0:
return -1
mid = len(lst) // 2
if lst[mid] == key:
return mid
else:
if key < lst[mid]:
return ordered_seq_search(lst[:mid], key)
else:
return ordered_seq_search(lst[mid + 1:], key)

Hash

def hashlibTest():
import hashlib
str = "Hello,World"
print(hashlib.md5(str).hexdigest())
print(hashlib.sha1(str).hexdigest())
print(hashlib.sha224(str).hexdigest())
print(hashlib.sha256(str).hexdigest())
print(hashlib.sha512(str).hexdigest())

简单排序

def bubbleSort(lst):
for i in range(len(lst)):
for j in range(len(lst) - 1, i, -1):
if lst[j] < lst[j - 1]:
lst[j], lst[j - 1] = lst[j - 1], lst[j] def selectSort(lst):
'''
从后向前,从待排序部分选择,每一趟外层选择,确定最大元素位置,进行一次交换
:param lst:
:return:
'''
for fillslot in range(len(lst) - 1, 0, -1):
positionOfMax = 0
for location in range(1, fillslot + 1):
if lst[location] > lst[fillslot]:
positionOfMax = location
lst[positionOfMax], lst[fillslot] = lst[fillslot], lst[positionOfMax] def insertSort(lst):
for i in range(1, len(lst)):
currentValue = lst[i]
position = i
while position > 0 and currentValue < lst[position - 1]:
lst[position] = lst[position - 1]
position = position - 1
lst[position] = currentValue def mergeSort(lst):
if len(lst) > 1:
mid = len(lst) // 2
lefthalf = lst[:mid]
righthalf = lst[mid:] # 递归
mergeSort(lefthalf)
mergeSort(righthalf) i = j = k = 0
while i < len(lefthalf) and j < len(righthalf):
if lefthalf[i] < righthalf[j]:
lst[k] = lefthalf[i]
i = i + 1
else:
lst[k] = righthalf[j]
j = j + 1
k = k + 1
while i < len(lefthalf):
lst[k] = lefthalf[i]
i = i + 1
k = k + 1
while j < len(righthalf):
lst[k] = righthalf[j]
j = j + 1
k = k + 1 def quickSort(lst, left, right):
if left < right:
i = left
j = right
k = lst[i]
while i < j:
while i < j and lst[j] > k:
j = j - 1
lst[i] = lst[j]
while i < j and lst[i] < k:
i = i + 1
lst[j] = lst[i]
lst[i] = k
quickSort(lst, left, i - 1)
quickSort(lst, i + 1, right) if __name__ == '__main__':
seq = [x for x in range(1, 11)]
# print(seq_search(seq, 8))
# print(seq_search(seq, 18))
# print(ordered_seq_search(seq, 8))
# print(ordered_seq_search(seq, 18)) # hashlibTest() lst = [2, 0, 3, 6, 1, 4, 9, 7, 5, 8]
quickSort(lst, 0, len(lst) - 1)
print(lst)

python排序查找的更多相关文章

  1. Python二分查找算法

    Python 二分查找算法: 什么是二分查找,二分查找的解释: 二分查找又叫折半查找,二分查找应该属于减值技术的应用,所谓减值法,就是将原问题分成若干个子问题后,利用了规模为n的原问题的解与较小规模( ...

  2. python 排序算法总结及实例详解

    python 排序算法总结及实例详解 这篇文章主要介绍了python排序算法总结及实例详解的相关资料,需要的朋友可以参考下 总结了一下常见集中排序的算法 排序算法总结及实例详解"> 归 ...

  3. 带你掌握4种Python 排序算法

    摘要:在编程里,排序是一个重要算法,它可以帮助我们更快.更容易地定位数据.在这篇文章中,我们将使用排序算法分类器对我们的数组进行排序,了解它们是如何工作的. 本文分享自华为云社区<Python ...

  4. python排序之二冒泡排序法

    python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...

  5. python排序之一插入排序

    python排序之一插入排序 首先什么是插入排序,个人理解就是拿队列中的一个元素与其之前的元素一一做比较交根据大小换位置的过程好了我们先来看看代码 首先就是一个无序的列表先打印它好让排序后有对比效果, ...

  6. 用 Python 排序数据的多种方法

    用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...

  7. Sublime文本排序&查找重复行&删除重复行

    排序 按F9或者选择菜单:Edit > Sort Lines,对每行文本进行排序 查找重复行 排序好后,按Ctrl+F,调出查找面板 查找字符串: ^(.+)$[\r\n](^\1$[\r\n] ...

  8. python 字符串查找

    python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法. 1 find()方法: )##从下标1开始,查找在字符串里第一个出现的子串:返回结果3 ...

  9. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

随机推荐

  1. win7-时间更新

    今天发现电脑的时间不对,后来就自己摸索了时间的自动更新方法.自己记录下来,以方便以后忘了查询 点击电脑右下角的时间->选择更改日期和时间设置->选择internet->更改设置-&g ...

  2. Day4晚笔记

    数据结构 并查集:捆绑两个点的信息,判断对错 倍增:LCA, 字符串 hash,模拟, 最小表示法 给定一个环状字符串,切开,使得字符串的字典序最小 图和树 割点,割边,强联通分量 点双联通分量 (把 ...

  3. THC=TERMINAL HANDLING CHARGE,碼頭操作費

    THC=TERMINAL HANDLING CHARGE,碼頭操作費

  4. Vue的学习--遇到的一些问题和解决方法

    包括: 1.Missing space before function parentheses 2.如何给.vue文件的页面添加css 3.如何给.vue文件页面里的元素添加监听器 4.如何为每一个页 ...

  5. 开发板Ping不通虚拟机和主机

    Ubuntu 16.04      win7 笔记本连接学校的无线网 开发板S3c2440与笔记本仅通过COM连接 问题描述: 设置了桥接,主机与虚拟机IP在同一网段后,主机与虚拟机可以Ping,但是 ...

  6. 五、Docker+Sqlserver

    原文:五.Docker+Sqlserver sqlserver现在支持linux了.所以可以运行在docker内 一.下载镜像: docker pull microsoft/mssql-server- ...

  7. Unity5中的粒子缩放(附测试源码)

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/49363241 作者:car ...

  8. 关于YUM错误,Error: rpmdb open failed

    错误如题: rpmdb: Thread/process / failed: Thread died in Berkeley DB library error: db3 error(-) from db ...

  9. Spring+Struts2+Hibernate的整合

    这篇主要采用Maven搭建Spring+Struts2+Hibernate的整合项目,复习一下SSH框架,虽然spring提供自己的MVC框架, 但是Spring也提供和其他框架的无缝整合,采用组件形 ...

  10. springMVC easyUI filebox 单个文件上传

    被这个文件上传坑到如今.还是自己技术问题,照着之前extjs项目那边的上传实例,愣是上传不了 到后面就查了下springMVC的文件上传,依照那样搞定了http://blog.csdn.net/jad ...