python算法基础

1.二维数组90度旋转

data = [[col for col in range(4)] for row in range(4)]

for v in data:
    print(v)

for r_index,row in enumerate(data):
    for c_index in range(r_index,len(row)):
        tmp = data[c_index][r_index]
        data[c_index][r_index] = row[c_index]
        data[r_index][c_index] =tmp

for v in data:
    print(v)

2.二分查找

def binary_search(data_source,find_n):
    mid = int(len(data_source)/2)
    if len(data_source) >= 1:
        if data_source[mid] > find_n:
            binary_search(data_source[:mid],find_n)
        elif data_source[mid] < find_n:
            binary_search(data_source[mid:],find_n)
        else:
            print("find")
    else:
        print("cannot find")

if __name__ == ‘__main__‘:
    data = list(range(1, 6000, 3))
    print(data)
    binary_search(data,30)
时间: 2024-08-08 05:38:18

python算法基础的相关文章

python - 算法基础 - 递归

递归在需要重复操作且操作范围呈规律性变化时可以很方便帮我们解决问题 递归的特点: 1.递归就是在函数中调用自身 2.在使用递归时,必须有一个明确的结束条件,成为递归出口 3.递归算法通常显的很简洁,但是效率较低,所以一般不提倡用递归算法设计程序 4.在递归调用的过程中,系统为每一层的返回点.局部变量等开辟了栈来存储,递归次数过多容易造成栈溢出等 使用递归的要求: 1.每次相对前一次复杂度(一般是操作范围)都有所减小(通常是减半) 2.相邻两次重复之间有密切关系,前一次要为后一次做准备(通常是前一

python小白-day4递归和算法基础

递归&算法基础 一.递归 递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰. 使用递归函数需要注意防止栈溢出.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧.由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出. 1 2 3 4 5 6 7 8 def calc(n):     print(n)     if n/2>1:         r

Python 迭代器&amp;生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 迭代器&

Python 从基础------进阶------算法 系列

简介 关于Python的知识,其实自己很早就想单独开一个系列出来,但是碍于自己太懒了,到现在都还没执行.最近觉得自己实在是没有脸面在拖延下去了,遂将自己学习的整理一下,便于以后自己翻看.此前花过一段时间学习了有些Python的基础,做了一些简单的笔记,记录在印象笔记里.后期买了几本关于Python的书籍,但是到现在也只是看了基础的四分之一,希望借此来督促自己,争取早日完成自己学习Python的目标.由于个人挑选的书的原因,此系列主要包含,基础.进阶.算法等,若在此过程中有什么地方描述的不对的地方

算法基础——经典八大排序算法的Java及Python实现

概述 八大排序算法不用多说了,程序员算法基础必须要掌握的,现在总结一下加深记忆.下图是这八大排序算法的分类.名称.时间空间复杂度,以及稳定性. 代码 以下是经典八大排序算法的Java及Python代码,都是基于经典算法书籍<算法导论>里的伪代码实现的,我在关键语句部分附上了注释. 按照上图中的顺序分别介绍八大排序算法的实现(升序),前面是Java,后面是Python.Java的排序函数写在了一个类里,Python的排序函数则直接写出来了. 直接插入排序 public class InsertS

机器学习资料《分布式机器学习算法理论与实践》+《白话机器学习算法》+《Python机器学习基础教程》

机器学习正在迅速改变我们的世界.我们几乎每天都会读到机器学习如何改变日常的生活. 人工智能和大数据时代,解决最有挑战性问题的主流方案是分布式机器学习! <分布式机器学习:算法.理论与实践>电子书资料全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向. 我认为第3章到第8章是核心,讲解分布式机器学习的框架及其各个功能,分别针对其中的数据与模型划分模块.单机优化模块.通信模块.数据与模型聚合模块加以介绍.最有用的是第9章,学习由分布式机器学习框架中不同选项所组合

python 算法

在Python实践中,我们往往遇到排序问题,比如在对搜索结果打分的排序(没有排序就没有Google等搜索引擎的存在),当然,这样的例子数不胜数.<数据结构>也会花大量篇幅讲解排序.之前一段时间,由于需要,我复习了一下排序算法,并用Python实现了各种排序算法,放在这里作为参考. 最简单的排序有三种:插入排序,选择排序和冒泡排序.这三种排序比较简单,它们的平均时间复杂度均为O(n^2),在这里对原理就不加赘述了.贴出来源代码. 插入排序: def insertion_sort(sort_lis

Python算法:推导、递归和规约

Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心知识:Induction(推导).Recursion(递归)和Reduction(规约),这是原书的重点和难点部分 正如标题所示,本节主要介绍下面三部分内容: • Reduction means transforming one problem to another. We normally red

Python之路【第二十四篇】Python算法排序一

什么是算法 1.什么是算法 算法(algorithm):就是定义良好的计算过程,他去一个或一组的值为输入,并产生出一个或一组至作为输出.简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果. 2.算法的意义 假设计算机无限快,并且计算机存储容器是免费的,我们还需要各种乱七八糟的算法吗?如果计算机无限快,那么对于某一个问题来说,任何一个都可以解决他的正确方法都可以的! 当然,计算机可以做到很快,但是不能做到无限快,存储也可以很便宜但是不能做到免费. 那么问题就来了效率:解决同一个问题的各