python的冒泡法和二分法的总结

一:二分法

首先介绍二分法

二分法查找,每次能够排除掉一半的数据,查找的效率非常高,但是局限性比较大,必须是有序的序列才可以使用二分法查找

要求:查找的序列必须是有序序列

---------------------------------------------------------------------------------------------------------------------------------------------------------

下面是一个二分法的例子:

# lst=[1,3,6,8,15,22,33,44,45,56,77,78,87,89,90,94,97,101]lst=[1,2,3,4,5,6]n=4left=0right=len(lst)-1count=1while left <= right:    middle=(left+right)//2    if n < lst[middle]:        right=middle-1     #重新定义边界,因为之前的middle已经比较过了,往左移动一位    elif n > lst[middle]:        left=middle+1    else:               #思想是退出循环就表示找到了        print(count)    #count用来计算查找了几次        print(middle)   #middle是查找到的索引,这个是怎么定定位的        break    count=count+1 #用来计算查找了几次else:    print("不存在")
--------------------------------------------------------------------------------------------------

二:冒泡法:

就是比较前后两个数字的大小,如果前面的比后面的大,就互换

下面是一个例子:
lst=[10,20,2,33,44,66,77,88,45,4,56,77,8,6,643,334,53,2,23]def fun_sort(lst):    count=len(lst)    for i in range(0,count):        for j in range(i+1,count):            if lst[i] > lst[j]:                lst[i],lst[j]=lst[j],lst[i]        print(lst)a=fun_sort(lst)print(a)----------------------------------------------------------------------------------------------------


原文地址:https://www.cnblogs.com/zhuhaofeng/p/9484066.html

时间: 2024-11-12 09:24:14

python的冒泡法和二分法的总结的相关文章

Java冒泡法和二分法

最近去一家公司面试,手贱在人家CTO面前自告奋勇写了一把冒泡法,结果在交换数据的时候出了洋相,回家反思,写下如下代码,对自己算是一个鞭策,得到的教训是不要眼高手低,低调前行. 1 package com.defymedia.interview.sort; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Random; 6 7 public class SimpleSort { 8 9 publ

一些Python的惯用法和小技巧:Pythonic

Pythonic其实是个模糊的含义,没有确定的解释.网上也没有过多关于Pythonic的说明,我个人的理解是更加Python,更符合Python的行为习惯.本文主要是说明一些Python的惯用法和小技巧,其实与上一篇<编码规范>有异曲同工之妙,都是为了增加代码可读性,但Pythonic可能还会从性能的角度进行考虑. 首先是两个不得不说的Python的特性List Comprehension和Generator Expression,非常精简的语法,很大程度上取代了冗长for循环. 1. 列表解

基于python语言的经典排序法(冒泡法和选择排序法)

前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 在之前,曾写过使用java和C语言实现该两种排序法,详情见https://www.cnblogs.com/hong-fithing/p/7615907.html 搭建环境,准备工作就不冗余介绍了,网上搜罗一大堆 目录 冒泡排序法 选择排序法 冒泡排序法 冒泡类似于汽水现象,摇动一下,就有很多泡往上冒

分享一个多线程实现[冒泡][选择][二分法]排序的例子

线程的使用规则我将会在我另一篇文章<Delphi中使用比较少的一些语法>中进行介绍,这里只开放一篇Delphi原代码的算法: //工程文件:Sort_MultiThread.dpr program Sort_MultiThread; uses  Forms,  SortUI in 'SortUI.pas' {fmSortUI},  SortUC in 'SortUC.pas'; {$R *.res} begin  Application.Initialize;  Application.Mai

python的算法:二分法查找(1)

1.什么是二分法查找: 1.从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束: 2.如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较. 3.如果在某一步骤数组为空,则代表找不到. 每次都是i减半查找,其时间消耗为O(logn) 最简单的一个循环算法就是: def binary_search_loop(lst,value): low,high=0,len(value)-1 while low<=high: mid=

Python之冒泡算法

有如下列表,要求从左到右顺序排序 li = [13,22,6,99,11] 实现方法: li = [13,22,6,99,11]print "##########原始数字顺序################"print liprint "#########开始第一次排序############3"for m in range(4):    num1 = li[m]    num2 = li[m+1]    if num1>num2:       tmp = l

冒泡法和选择排序法(比较容易写混)

1 #include<stdio.h> 2 3 4 //冒泡排序法 5 6 void bubbling(int a[],int n); 7 8 //选择排序法 9 void choose(int a[],int n); 10 int main() 11 { 12 int i; 13 int s[6]; 14 printf("please enter five numbers:\n"); 15 for(i=1;i<6;i++) 16 { 17 scanf("%

数组遍历;添加去重;冒泡;二分法;

数组:(存放任意类型的数据.定义时不需要指定长度) 一.定义: 1.Array(1,3.14,"aa") : 是指给出的是(数据) 2.Array(5):是指给出的是(长度) 3.[1,3.14,"aa"]:使用方括号定义 二.属性: length:指数组的长度 三.方法: push:往数组里面追加元素 四.遍历: 1.for循环:for(var i=0;i<attr.length;i++) 2.foreach:换成for循环形式的是for(var a in

简单排序的俩种思想——冒泡法和选择排序法

冒泡法: 基本思想:每次将相邻的两个数比较,将小的调到前头(即为升序排列).首先比较第一和第二两个数,小的调到前头,再将比完后的第二个数与第三个数比较,同理小的调到前头.如此比较下去.假设有6个数参与排序,则第一趟两两之间共比较5次,第一趟比完之后最大的数已经到底.然后进行第二趟比较,两两之间共比较4次,将次大数调到倒数第二个数的位置.共需比较5趟,5趟比完之后呈现升序排列. 总结规律:如果有n个数,则要进行n-1趟比较.在第一趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次比较.