冒泡排序的原理:每次对相邻的两个元素进行比较,若前者大于后者,这将两者的位置交换。第一轮就可以将最大的元素置于列表的最后。几轮循环

冒泡排序的前提条件:有序的列表

import unittest
# 冒泡排序 def bubble_sort(arr):
for i in range(len(arr) - 1): #这个循环负责设置冒泡排序进行的次数
for j in range(len(arr) - 1 - i): #j为下标
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr class SortTesrCase(unittest.TestCase): def test_bubble_sort(self):
test_data_1 = [4,5,1,2,3]
copy_test_data_1 = test_data_1[:] bubble_sort(test_data_1)
copy_test_data_1.sort() self.assertEqual(test_data_1,copy_test_data_1) if __name__ == '__main__':
unittest.main() 二分查找

有序列表中,顺序查找需要从一端到另一端按照顺序进行查找,最多需要比较n次。二分查找从中间项开始

如果该项是我们目标项,则完成查找;如果目标项大于中间项,则可以消除中间项及比中间项目小的那一部分;反之,消除中间项目及比中间项目比较大的那一部分,之后再次重复上面过程。

import unittest

def bin_search(arr, target):
length = len(arr)
mid = length // 2 # 找到中间元素 if (length == 1 and arr[0] != target) or length == 0 : # 目标元素不存在
return False if arr[mid] == target: # 如果该元素等于目标元素
return True if target > arr[mid]: # 如果目标元素大于中间元素
print(arr[mid+1:])
return bin_search(arr[mid+1:], target) # 在列表的右半边递归进行二分查找
else: # 小于的情况
return bin_search(arr[:mid], target) # 在列表的左半边递归进行二分查找 class BinSearchTestCase(unittest.TestCase): def test_bin_search(self):
test_data = [9, 5, 2, 7] # 测试数据
test_data.sort() # 先排序 self.assertEqual(bin_search(test_data, 2), True)
self.assertEqual(bin_search(test_data, 9), True)
self.assertEqual(bin_search(test_data, 1), False)
self.assertEqual(bin_search(test_data, 999), False) if __name__ == '__main__':
unittest.main()
												

python笔试题的更多相关文章

  1. 【Python】【面试必看】Python笔试题

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出 2 个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没 ...

  2. 关于面试总结-python笔试题(递归)

    前言 本篇继续收集一些常见的python笔试题,以基础知识为主,递归是面试最喜欢考的一个问题,不管是做开发还是测试,都无法避免考递归.本篇结合实际案例,讲下几种关于递归的场景. 计算n的阶乘 计算n! ...

  3. python笔试题(1)

            为了充实自己,小编决定上传自己见到的笔试题和面试题.可能要写好长时间,一时半会写不了多少,只能说遇到多少写多少吧,但是只要小编有时间,会持续上传(但是答案却不能保证,所以有看到错误的及 ...

  4. Python笔试题&面试题总结

    黑色加粗的是笔试题,蓝色是面试题 1.什么是GIL 2.Python中的@staticmethod和@classmethod的区别 (**) 3.Python里面如何拷贝一个对象,并解析深浅拷贝 4. ...

  5. 关于面试总结-python笔试题

    关于面试总结4-python笔试题 前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功. 要是给你一 ...

  6. 最新Python笔试题2017 涵盖知识面广泛

    引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Python.下面这些问题涉及了与Python相关的许多技能,问题的关注点主要是语言本身,不是某个特定的包或模块.每一个问题都可以 ...

  7. 传说中的华为Python笔试题——两等长整数序列互换元素,序列和的差值最小(修正)

    有两个序列a,b,大小都为n,序列元素的值任意整形数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小. 1. 将两序列合并为一个序列,并排序,得到source ...

  8. 这十道经典Python笔试题,全做对算我输

    经常有小伙伴学了Python不知道是否能去找工作,可以来看下这十道题检验你的成果: 1.常用的字符串格式化方法有哪些?并说明他们的区别 a. 使用%,语法糖 print("我叫%s,今年%d ...

  9. 简单的python笔试题

    1.输出九九乘法口诀 for i in range(1,10): for j in range(1,i+1): print('{}*{}={}'.format(j,i,i*j),end=' ') pr ...

随机推荐

  1. [LeetCode] 673. Number of Longest Increasing Subsequence 最长递增序列的个数

    Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: I ...

  2. [LeetCode] 82. Remove Duplicates from Sorted List II 移除有序链表中的重复项之二

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  3. Windows搭建FTP/Http文件共享(利用IIS)

    控制面板——程序——添加功能 勾选Ftp服务器.万维网服务.IIS管理控制台 然后,计算机——右键管理——服务和应用程序,添加网站和添加Ftp IP设置为 未分配 或 本机获取到的静态IP即可. 然后 ...

  4. oracle--DG监控脚本

    conn sys@oracle01 as sysdba column dest_name format a30 column destination format a20 column MEMBER ...

  5. java web开发入门十一(idea maven mybatis自动代码生成)基于intellig idea

    6.idea maven mybatis逆向工程(代码生成器) 1.配置pom.xml 在plugins标签下添加mybatis-generator-maven-plugin <plugin&g ...

  6. idea无法识别maven项目

    右击pom文件,Add即可

  7. Qt 操作SQLite数据库

    项目中通常需要采用各种数据库(如 Qracle.SQL Server.MySQL等)来实现对数据的存储.查询等功能.下面讲解如何在 Qt 中操作 SQlite 数据库. 一.SQLite 介绍 Sql ...

  8. unix高级环境编程学习笔记第七章(未完)

    博客地址:http://www.cnblogs.com/zengjianrong/p/3222081.html 7.1 引言 Main函数调用:命令行参数:存储器布局:如何分配存储器:进程使用env: ...

  9. springboot: xercesImpl.jar和xml-apis.jar (系统找不到指定的文件)

    springboot内置的tomcat为8.5.23, tomcat在8.5.2 中 修改了加载jar的方式,8.5.2 版本会解析jar中MANIFEST.MF文件,当该文件包含class-path ...

  10. .net 6.0 新特性

    1. 属性初始化 class Person { public string Name { get; set; } public string Sex { get; set; } = "男&q ...