day 15,递归函数,二分查找法

一、递归函数

‘‘‘1,算法:二分查找,树运算,堆,栈....

‘‘‘#前提,有序且唯一的数字数列# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]# print(l.index(66))# count = 0# for i in l:#     if i == 66:#         print(count)#         break#     count += 1

#,1,aim 6#2,aim与list的中间的数进行比较mid,aim > mid  取mid --end 中间的数与aim在进行比较#3,aim与list的中间的数进行比较mid,aim < mid  取start --min 中间的数与aim在进行比较

# def two_search(li, aim):#     mid_index = len(li) // 2  # 3#     if li[mid_index] < aim:#         return two_search(li[mid_index+1:],aim)#     elif li[mid_index] > aim:#         return two_search(li[:mid_index],aim)  #([2,3,5],3)#     elif li[mid_index] == aim:#         return mid_index#     else:#         return ‘没有此值‘# print(two_search(l,17))‘‘‘1: aim 15, start:0 end:6 min_index:3 , li[min_index]:102: aim 15, start:4 end:6 min_index:5   li[min_index]:333, aim 15, start:4 end:4 min_index:4   li[min_index]:15‘‘‘l = [2, 3, 5, 10, 15, 33, 55]def two_search(li, aim, start=0, end=None):    end = len(li) if end is None else end    mid_index = (end - start) // 2 + start  # 3    if start <= end:        if li[mid_index] < aim:            return two_search(li, aim, start=mid_index+1, end=end)        elif li[mid_index] > aim:            return two_search(li, aim, start=start, end=mid_index-1)  #([2,3,5],3)        elif li[mid_index] == aim:            return mid_index        else:            return ‘没有此值‘    else:        return ‘没有此值‘print(two_search(l,100))

二、二分查找法:
‘‘‘1,算法:二分查找,树运算,堆,栈....

‘‘‘#前提,有序且唯一的数字数列# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]# print(l.index(66))# count = 0# for i in l:#     if i == 66:#         print(count)#         break#     count += 1

#,1,aim 6#2,aim与list的中间的数进行比较mid,aim > mid  取mid --end 中间的数与aim在进行比较#3,aim与list的中间的数进行比较mid,aim < mid  取start --min 中间的数与aim在进行比较

# def two_search(li, aim):#     mid_index = len(li) // 2  # 3#     if li[mid_index] < aim:#         return two_search(li[mid_index+1:],aim)#     elif li[mid_index] > aim:#         return two_search(li[:mid_index],aim)  #([2,3,5],3)#     elif li[mid_index] == aim:#         return mid_index#     else:#         return ‘没有此值‘# print(two_search(l,17))‘‘‘1: aim 15, start:0 end:6 min_index:3 , li[min_index]:102: aim 15, start:4 end:6 min_index:5   li[min_index]:333, aim 15, start:4 end:4 min_index:4   li[min_index]:15‘‘‘l = [2, 3, 5, 10, 15, 33, 55]def two_search(li, aim, start=0, end=None):    end = len(li) if end is None else end    mid_index = (end - start) // 2 + start  # 3    if start <= end:        if li[mid_index] < aim:            return two_search(li, aim, start=mid_index+1, end=end)        elif li[mid_index] > aim:            return two_search(li, aim, start=start, end=mid_index-1)  #([2,3,5],3)        elif li[mid_index] == aim:            return mid_index        else:            return ‘没有此值‘    else:        return ‘没有此值‘print(two_search(l,100))

原文地址:https://www.cnblogs.com/zzw731862651/p/8762196.html

时间: 2024-08-29 22:05:23

day 15,递归函数,二分查找法的相关文章

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

一.多维数组 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int num[3][4]; 6 int i,j; 7 for (i = 0; i < 3; i++) 8 { 9 for (j = 0; j < 4; j++) 10 { 11 num[i][j]=4*i+j+1; 12 printf("%-3d",num[i][j]); 13 } 14 printf("\

Java学习 (七)、数组,查找算法,二分查找法,冒泡排序,选择排序,插入排序

一.常用数组查找算法 工作原理:它又称为顺序查找,在一列给定的值中进行搜索,从一端的开始逐一检查每个元素,知道找到所需元素的过程. 例1:查找指定的数在数组中出现的位置,找到返回下标,找不到返回-1 1 import java.util.Scanner; 2 public class LinearSearch{ 3 public static void main(String []argas) 4 { 5 int [] array={10,100,90,65,80,92}; 6 System.o

选择、冒泡排序,二分查找法以及一些for循环的灵活运用

import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] array = { 31, 22, 15, 77, 52, 32, 18, 25, 16, 7 }; // 冒泡 --> 两两比较 --> 提取出最大的数 在最后一位 //拿第一位和它后面的一位进行 两两比较 System.out.println(Arrays.toString(array)); fo

查询资料:二分查找法

二分查找 编辑 同义词 二分查找法一般指二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表.重复以上过程,直到找到满足条件的记录,使查找成功,或直到

冒泡排序、二分查找法

冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样数组元素就像气泡一样从底部上升到顶部. 1 package com.hanqi; 2 3 public class maopao { 4 5 public static void main(String[] args) { 6 int[]array=new int[]{63,4,24,1,3,13}; 7 System.out.println("冒

二分查找法 冒泡排序法

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好; 其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功; 否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表. 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功. 二分查找

java,二分查找法,网上查阅

二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.通过一次比较,将查找区间缩小一半. 折半查找是一种高效的查找方法.它可以明显减少比较次数,提高查找效率.但是,折半查找的先决条件是查找表中的数据元素必须有序. 折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除

Java-数据结构与算法-二分查找法

1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: 1 package Test; 2 3 import java.util.Arrays; 4 5 public class BinarySearch { 6 7 public static void main(String[] args) { 8 int [] a = {1,5,7,9,11,12,16,20}; 9 int target = 16; 10 //System.out.println(Arrays.binar

js 二分查找法之每日一更

<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html"/> <meta name="keywords" content="二分查找算法" /> <meta name="description" content="二分查找算法&