#选择n^2def selectSort(li):    for i in range(len(li)-1):        minLoc = i        for j in range(i+1,len(li)):            if li[j] < li[minLoc]:                li[minLoc],li[j] = li[j],li[minLoc]

# li = [2,1,6,8,3,9,424,243,351,51]# selectSort(li)# print(li)

#冒泡n^2

def bubbleSort(li):    for i in range(len(li)-1):        flag = False        for j in range(len(li)-i-1):            if li[j+1] < li[j]:                li[j+1],li[j] = li[j],li[j+1]                flag = True            if not flag:                return

#插入n^2def insertSort(li):    for i in range(1,len(li)):        tmp = li[i]        j = i-1        while j>=0 and li[j] >tmp:            li[j+1] = li[j]            j = j-1        li[j+1] = tmp

# insertSort(li)# print(li)

#冒泡是把最大的放到最后面,选择是把最小的放前面,插入

#快速排序,nlogn

def partition(li,left,right):    tmp = li[left]    while left < right:        while left < right and tmp <= li[right]:            right = right - 1        li[left] = li[right]

        while left < right and tmp >= li[left]:            left = left + 1        li[right] = li[left]    li[left] = tmp    return left

def quickSort(li,left,right):    if left <right:        mid = partition(li,left,right)        quickSort(li,left,mid-1)        quickSort(li,mid+1,right)

#归并排序nlogn

def merge(li,low,mid,high):    i = low    j = mid + 1    ltmp = []    while i <= mid and j<=high:        if li[i] >= li[j]:            ltmp.append(li[j])            j = j+1        else:            ltmp.append(li[i])            i = i+1    while i<= mid:        ltmp.append(li[i])        i = i+1    while j<=high:        ltmp.append(li[j])        j = j+1    li[low:high+1] = ltmp

def mergeSort(li,low,high):    if low < high:        mid = (low + high) //2        mergeSort(li,low,high)        mergeSort(li,mid+1,high)        merge(li,low,mid,high)        print(li[low:high+1])

li = [10,4,6,3,8,2,5,7]# mergeSort(li,0,len(li)-1)

#计数排序O(n)def countSort(li):    count = [0 for i in range(11)]

    for x in li:        count[x] +=1    li.clear()

    for index,val in enumerate(count):        for i in range(val):            li.append(index)

# countSort(li)# print(li)

#二分法def BinarySearch(n,l):    print(l)    if len(l) == 0:        print('not exists')        return    mid_index = len(l) // 2    if n > l[mid_index]:        l = l[mid_index+1:]        BinarySearch(n,l)    elif n < l[mid_index]:        l = l[:mid_index]        BinarySearch(n,l)    else:        print(f'find it,index is l[{l.index(n)}]')

# BinarySearch(6,li)

转载于:https://www.cnblogs.com/beiji/p/10059043.html

python实现简单算法相关推荐

  1. 小白学数据:教你用Python实现简单监督学习算法

    转载自 小白学数据:教你用Python实现简单监督学习算法 今天,文摘菌想谈谈监督学习. 监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段.即便是在无监督学习兴起的近日,监督 ...

  2. 【python】利用python实现简单粒子群优化算法实例

    前言 最近在准备复(bai)习(lan)智能信息处理ing--想着通过复现一些PPT上简单算法例子的方式加深自己对算法的理解,也作为大家使用粒子群这一算法的思路与代码参考hhh 算法简述 粒子群算法( ...

  3. 很多都是python很简单吗,但是要如何才能入门python并精通呢?

    1,python怎么学 一般来说,Python几个月应该是可以入门了.如果你几个月还没有入门,一定是方法不对,要么就是偷懒了.我在公众号里面有一篇文章详细写过 '初学者上来不要学爬虫',爬虫虽然非常有 ...

  4. 用Python实现简单的人脸识别,10分钟(附源码)

    前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...

  5. em算法python代码_EM 算法求解高斯混合模型python实现

    注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...

  6. Python:SMOTE算法——样本不均衡时候生成新样本的算法

    Python:SMOTE算法 直接用python的库, imbalanced-learn imbalanced-learn is a python package offering a number ...

  7. python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...

    原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...

  8. python算法书籍-有哪些用 Python 语言讲算法和数据结构的书?

    1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python](Welcome to Problem Solving with Algorithms and ...

  9. python编写程序-30分钟学会用Python编写简单程序

    参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方式修改它们. 了解构成有效Python标识符和表 ...

最新文章

  1. const和static readonly 区别
  2. 在iOS中使用tableView
  3. Spring3 表达式语言(SpEL)介绍
  4. c++字符前面的L和_T
  5. 修改默认runlevel
  6. 【转】C++ vector的reserve和resize详解
  7. python 获取内存使用率_Python获取CPU使用率、内存使用率、网络使用状态 | 学步园...
  8. 手机网页里的模态对话框
  9. (转)递归转非递归的思路和例子
  10. python 无法引入同级目录的方法_再见 virtualenv!K神教你轻松管理多个Python环境...
  11. java 怎么链接ndk的库_使用ndk-build链接现有的静态库
  12. 第3讲 zend原理剖析
  13. Java 常用修饰符总结
  14. UIButton颜色渐变 titleLabel字体不显示
  15. 隋朝之前,扬州指的是现在的南京
  16. 2021-08-3116. 最接近的三数之和 排序+双指针
  17. 关系运算符和逻辑运算符
  18. 电脑麦克风,详细教你电脑麦克风没声音怎么设置
  19. 基于传统方法的单目深度估计
  20. ExecuteNonQuery()的用法

热门文章

  1. 高级排序之快速排序(分割与整合)
  2. 7 ida pro 网盘_IDA分析iOS网络协议
  3. 如何使用小程序自定义组件功能
  4. ERP项目管理的关键控制点
  5. xml dtd 约束建立xml文档
  6. redis安装+启动和连接+让redis在后台运行
  7. CCF NOI1072 爬楼梯
  8. 电视领域“烧钱”不止,酷开为何反成赢家?
  9. VirtualBox启动报错
  10. 性能之巅:Linux网络性能分析工具