无序表查找

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. 高性能计算机传奇(vamei)

    高性能计算机是用网络将多台计算机连接在一起.并构成一个统一的系统,从而拥有远超个人电脑的计算能力.这样利用网络,让计算机合作工作的并行系统又称为集群(cluster).server.分布式计算机.超级 ...

  2. 7.Maven之(七)pom.xml配置文件详解

    转自:https://blog.csdn.net/qq_33363618/article/details/79438044 setting.xml主要用于配置maven的运行环境等一系列通用的属性,是 ...

  3. ZOJ 2301 Color the Ball 线段树(区间更新+离散化)

    Color the Ball Time Limit: 2 Seconds      Memory Limit: 65536 KB There are infinite balls in a line ...

  4. (F) linux sort,uniq,cut,wc命令详解

    F:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858385.html sort sort 命令对 File 参数指定的文件中的行排序,并 ...

  5. vector转数组

    vector转数组 由于vector内部的数据是存放在连续的存储空间,vector转数组事实上只需要获取vector中第一个数据的地址和数据的长度即可.如果仅仅是传参,无需任何操作,直接传地址即可,如 ...

  6. 【Educational Codeforces Round 35 D】Inversion Counting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 排列中交换任意两个数字. 排列的逆序对个数的奇偶性会发生变化. 翻转这个过程其实就是len/2对数字发生交换. 交换了偶数次的话,不 ...

  7. JAVA异常机制简述

    1.类的继承结构 在JAVA所有的异常对象都是Throwable类的一个子类的实例 Exception包含两个分支,由于程序错误导致的异常属于RuntimeException,比如数组下标越界,空指针 ...

  8. .less为后缀的文件是什么

    .less为后缀的文件是什么 一.总结 1.less是什么:LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS ...

  9. vue 自定义分页组件

    vue2.5自定义分页组件,可设置每页显示条数,带跳转框直接跳转到相应页面 Pagination.vue 效果如下图: all: small(只显示数字和上一页和下一页): html <temp ...

  10. ASM学习笔记--ASM 4 user guide 第二章要点翻译总结

    参考:ASM 4 user guide 第一部分 core API 第二章  类 2.1.1概观 编译后的类包括: l  一个描述部分:包括修饰语(比如public或private).名字.父类.接口 ...