python基础一 ------排序和查找算法
插入排序;
假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素
放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面
因为前面两个元素顺序已经排好,再将这个新进入到前面的较小元素与前面排好顺序的元素依次比较,直到找到合适位置插入
举例:[9,4,3,1]
顺序依次:-->[4,9,3,1]
-->[4,3,9,1]-->[3,4,9,1]
--[3,4,1,9]-->[3,1,4,9]-->[1,3,4,9]
代码
#-*-coding:utf-8 -*- def insert_sort(lists): print("原数据",lists)
num = len(lists)
for i in range(1,num):
key = lists[i]
j = i-1
while(j>=0):
if lists[j]>key:
lists[j+1] = lists[j]
lists[j] = key
print(lists)
j -=1
print("排序后",lists) insert_sort([9,4,3,1])
冒泡排序:
def bubble_sort(lists):
print("排序前:冒泡排序",lists)
num = len(lists)
for i in range(0,num):
for x in range(i+1,num):
if(lists[x]<lists[i]):
temp = lists[i]
lists[i] = lists[x]
lists[x] = temp
print(lists)
print("排序后",lists)
二分法查找:
代码实现
def binary_search(lists,e):
#二分法查找(必须是对于排序后的数组)
right = len(lists)
left = 0
while left<=right:
mid = int((right+left)/2)
if e<lists[mid]:
right = mid-1
continue
if lists[mid]==e:
return mid
if lists[mid]<e:
left = mid+1 return "not exist" search_list = [1, 3, 4, 6, 8, 9]
[print(binary_search(search_list,x)) for x in search_list]
按顺序输出每个元素小标
python基础一 ------排序和查找算法的更多相关文章
- C# 基础排序与查找算法
排序算法: class Sort { static void swap<T>(ref T a, ref T b) { T tmp = a; a = b; b = tmp; } #regio ...
- python基础===八大排序算法的 Python 实现
本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一 ...
- python 排序和查找算法
一.搜索 1.顺序查找 数据存储在具有线性或顺序关系的结构中时,可顺序访问查找 def sequential_search(ilist, item): pos = 0 while pos < l ...
- 面试常问的几个排序和查找算法,PHP实现
冒泡,快排,二分查找,都是面试常问的几个算法题目,虽然简单,但是一段时间不用的话就很容易忘记,这里我用PHP实现了一下,温故而知新. 排序 冒泡排序 每一次冒出一个最大的值 function bubb ...
- [PHP] 排序和查找算法
知乎:冒泡排序(bubble sort)的原理是什么? 潘屹峰: 冒泡排序的原理可以顾名思义:把每个数据看成一个气泡,按初始顺序自底向上依次对两两气泡进行比较,对上重下轻的气泡交换顺序(这里用气泡轻. ...
- Go基础之--排序和查找操作
排序操作主要都在sort包中,导入就可以使用了import("sort") 常用的操作 sort.Ints:对整数进行排序sort.Strings:对字符串进行排序sort.Flo ...
- python基础下的数据结构与算法之链表
一.链表的定义 用链接关系显式表示元素之间顺序关系的线性表称为链接表或链表. 二.单链表的python实现 class Node(object): """定义节点&quo ...
- C#常用排序和查找算法
1.C#堆排序代码 private static void Adjust (int[] list, int i, int m) { int Temp = list[i]; int j = i * 2 ...
- python基础练习题(题目 查找字符串。)
day39 --------------------------------------------------------------- 实例061:查找字符串 题目 查找字符串. 分析:查找字符串 ...
随机推荐
- Error: Can't resolve 'babel-loader'
在控制台中运行命令“webpack”,出现错误:“ERROR in Entry module not found: Error: Can't resolve 'babel-loader' in.... ...
- git添加删除远程tag
git tag -a test20190108_1 -m "fix bug" git push origin test20190108_1 git push origin :ref ...
- 优化算法系列-遗传算法(3)——NSGAII学习网址
JMetal https://www.cnblogs.com/denggaoshan/p/6306640.html https://www.cnblogs.com/denggaoshan/p/6308 ...
- Android应用程序国际化
前情提要 在Android应用程序中, 可以轻松更改语言, 以适应国际化标准 一些用户拥有多种语言习惯, 因此, 应用程序不能依赖设备默认语言环境, 必须提供更改显示语言的程序功能 本文章探寻持久化语 ...
- phpcms V9首页、列表页以及内容页调用标签
1.页面标题:{$title} 2.发表时间:{$inputtime} 3.内容来源:{$copyfrom} 4.文章内容:{$content} 5.缩略图地址:{$thumb} 6.组图列表: {l ...
- 原生js封装cookie获取、设置及删除
使用cookie(key,value,options) 参数key,value,options(可选) function cookie(key,value,options){ if(typeof va ...
- react中键盘enter事件处理
对于常见的搜索需求业务场景,用户输入完成后,点击enter事件请求数据,要求不提交页面,实现数据局部更新,这需要用到react中的表单Forms. 处理方法: (1)html书写 form标签中去掉a ...
- ubuntu 16.04 安装 kubelet、kubeadm 和 kubectl
解决了***之后,就开始K8S安装的正式旅程,本次记录 kubelet.kubeadm 和 kubectl 的安装: apt-get update && apt-get instal ...
- sort algorithms
//todo #include<iostream> void swap(int *a, int *b){int temp = *a; *a = *b; *b = temp;} ; i &l ...
- Task.Run与Task.Factory.StartNew的区别
Task是可能有延迟的工作单元,目的是生成一个结果值,或产生想要的效果.任务和线程的区别是:任务代表需要执行的作业,而线程代表做这个作业的工作者. 在.Net 4中,Task.Factory.Star ...