day17递归函数(二分法查找)】的更多相关文章

lambda匿名函数(函数名统一都叫lambda) 为了解决简单的需求而设计的一句话函数 语法: lambda 参数 返回值 n = lambda a,b: max(a,b) ret = n(9,4) print(ret) 注意: 函数的参数可以有多个,多个参数之间用逗号隔开 匿名函数只能写一行 返回值和正常的函数一样,可以是任意数据类型 sorted( )排序函数 语法 sorted(iterable,key=None,reverse=Flase) lst = [1,2,3,4,5,9,4,8…
递归函数: 如果函数包含了对其自身的调用,该函数就是递归的: example 1:二分法查找的实现: def find_recursion(l,aim,start=0,end=None): #end不能直接赋值len(l),因为列表l可能在函数后面定义: end=len(l) if end is None else end mid_idex = (end - start) // 2 + start if end>=start: #如果start>end,则寻找的值不存在: if l[mid_i…
一,匿名函数 lambda表⽰示的是匿名函数. 不需要⽤用def来声明, ⼀一句句话就可以声明出⼀一个函数 语法:    函数名 = lambda 参数: 返回值 注意: 1. 函数的参数可以有多个. 多个参数之间⽤用逗号隔开   2. 匿名函数不管多复杂. 只能写⼀一⾏行行, 且逻辑结束后直接返回数据   3. 返回值和正常的函数⼀一样, 可以是任意数据类型 二,排序函数  语法: sorted(Iterable, key=None, reverse=False) Iterable: 可迭代对…
插入排序 思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止. 要点:设立哨兵,作为临时存储和判断数组边界之用.  function insertSort($arr){ $count=count($arr); for($i=1;$i<$count;$i++){ $j=$i-1; $temp=$arr[$i]; while($j>=0){ if($arr[$j]>$…
def func(x): #普通函数 return x*x ret1 = func(10) #匿名函数 f = lambda x:x*x # 匿名函数写法: 匿名函数名=lambda 参数:返回值 '''''' ''' sorted()函数 写法:sorted(iterable,key=func,reverse=False) 原理:把iterable中的每一个元素,依次作为参数,传递给自定义函数,返回值是数字-int,然后进行排序(默认升序) 比如:列表中是int,字符串等元素 列表中是字典--…
#!/usr/bin/env python #coding:utf-8 ''' Created on 2015年12月8日 @author: DL @Description: 使用二分法查找mobile文件中区号归属地 ''' import os import sys class SearchAreacode(object): def __init__(self,file_name='mobile_sort'): self.fp = open(file_name) self.fp.seek(0,…
冒泡排序 var attr=[1,5,7,6,3,9,2,8,4]; var zj=0; //控制比较轮数 for(var i=0;i<attr.length-1;i++) { //控制每轮的比较次数 for(var l=0;l<attr.length-1-i;l++) { // 与下一个比较 if(attr[l]<attr[l+1]) { //互换 zj=attr[l]; attr[l]=attr[l+1]; attr[l+1]=zj; } } } alert(attr[0]) 二分法…
一.概念 二分查找算法也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法. 二.算法思想 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半. 三.优缺点 二分查找算法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难.因此,二分查找…
int find(int n,int a[],int l){int low=0;int high=l-1;int middle=0;while(low<high){middle=(low+high)>>1;if(n==a[middle]){printf("%d,%d",n,middle);return 1; }else if(n>a[middle])low=middle+1; elsehigh=middle-1; } return 0; } int main()…
//二分法查数据 var arr=[41,43,45,53,44,95,23]; var b=44; var min=0; var max=arr.length; for(var i=1;i<arr.length;i++){ //外层循环控制排序的次数 for(var j=0;j<arr.length-i;j++){//内层循环控制循环的个数 if(arr[j]<arr[j+1]){ z=arr[j]; arr[j]=arr[j+1]; arr[j+1]=z; } } } // aler…