插入排序(insertion_sort)——Python实现
1 # 在此修改初始数据
2 A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
3
4 print('您的初始数据为:')
5 print(A);print('\n'*1)
6 n = len(A) # 用n获取数组长度
7 i = 0 # 外循环时数组的下标
8 j = 0 # 内循环时数组的下标
9
10 while i <= n-1:
11 x = A[i]
12 j = i - 1
13 while j > -1 and A[j] > x:
14 A[j+1] = A[j]
15 j = j - 1
16 A[j+1] = x
17 i = i + 1
18 print(A)
19
20 print('调整后的数据为:')
21 print(A)
运行结果:
您的初始数据为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
调整后的数据为:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]
插入排序运行过程中数组A的变化情况:
1 [12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
2 [12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
3 [12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
4 [-1, 12, 56, 92, 5, 110, 92, 999, -39, 21, 76, 33, 56]
5 [-1, 5, 12, 56, 92, 110, 92, 999, -39, 21, 76, 33, 56]
6 [-1, 5, 12, 56, 92, 110, 92, 999, -39, 21, 76, 33, 56]
7 [-1, 5, 12, 56, 92, 92, 110, 999, -39, 21, 76, 33, 56]
8 [-1, 5, 12, 56, 92, 92, 110, 999, -39, 21, 76, 33, 56]
9 [-39, -1, 5, 12, 56, 92, 92, 110, 999, 21, 76, 33, 56]
10 [-39, -1, 5, 12, 21, 56, 92, 92, 110, 999, 76, 33, 56]
11 [-39, -1, 5, 12, 21, 56, 76, 92, 92, 110, 999, 33, 56]
12 [-39, -1, 5, 12, 21, 33, 56, 76, 92, 92, 110, 999, 56]
13 [-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]
简而言之,插入排序算法类似于打牌时的排序,从左到右按顺序选牌,然后插入到合适的位置。
插入排序(insertion_sort)——Python实现的更多相关文章
- 【算法】插入排序 insertion_sort
准备写个<STL 源代码剖析>的读书笔记,开个专栏.名为<STL 的实现>,将源代码整理一遍.非常喜欢侯捷先生写在封底的八个字:天下大事.必作于细.他在书中写到:"我 ...
- 排序算法之插入排序的python实现
插入排序的工作原理如下: (1)从数组第一个元素开始(0下标),从该元素开始进行构建有序序列: (2)取出待排序列中第一个元素,然后从“有序”序列中,从后往前扫描: (3)如果该元素(有序序列)大于待 ...
- 插入排序(insertion_sort)
最简单的排序算法,又称插值排序,原理类似于打扑克牌时把摸到的牌插入手中已有序牌的过程. void insertion_sort(int* A ,int n){ int i,j,key; ;i < ...
- 插入排序之python实现源码
def insert_sort(old): for i in range(1, len(old)): for j in range(i, 0, -1): if(old[j] < old[j-1] ...
- 插入排序(Python实现)
目录 1. for版本--插入排序 2. while版本--插入排序 3. 测试用例 4. 算法时间复杂度分析 1. for版本--插入排序 def insert_sort_for(a_list): ...
- 插入排序之python
插入排序( Insert sort) 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入: 由于不需要全部都比较完,所以排序速度优于冒泡和选择排序. #插入排序就像是斗地 ...
- 排序-----插入排序(python版)
直接插入排序的算法思路: (1) 设置监视哨r[0],将待插入纪录的值赋值给r[0]: (2) 设置开始查找的位置j: (3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j] ...
- 直接插入排序(python实现)
这篇博文用来介绍直接插入排序 直接插入排序基本思想: 每次将一个待排序的记录插入到已经排好序的数据区中,直到全部插入完为止 直接插入排序算法思路: 在直接插入排序中,数据元素分为了有序区和无序区两个部 ...
- 插入排序算法-python实现
#-*- coding: UTF-8 -*- import numpy as np def InsertSort(a): for i in xrange(1,a.size): for j in xra ...
- 插入排序的Python代码实现
是打扑克的时候了 那种按大小排序的扑克游戏 def insert_sort(arr): for i in range(1,len(arr)): for j in range(i,0,-1): #与左边 ...
随机推荐
- 台达PLC开发笔记(一):台达PLC连接介绍,分别使用485、网口与台达PLC建立连接
前言 台达AS系列,型号为AS322P. 物理设备连接 使用WPL Editor连接PLC 使用RS485口当作RS232口连接PLC 注意: ...
- Linux之RPM包
RPM:Redhat Package Manager 安装软件:rpm -ivh filename.rpm 升级软件:rpm -Uvh filename.rpm 卸载软件:r;pm -e filena ...
- 机器人路径规划其一 Dijkstra Algorithm【附动态图源码】
首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...
- java入门了解、安装jdk及软件的选择
学习编程,一些必要的dos命令还是需要掌握的. 以下只是列出常用的: cd 目录路径: 进入一个目录 cd .. 进入父目录 dir 查看本目录下的文件和子目录列表 cls 清除屏幕命令 上下键 ...
- 一台服务器能支撑多少个TCP连接
1. 困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题. 很多同学看 ...
- 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载
目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...
- hive学习笔记之十:用户自定义聚合函数(UDAF)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...
- Docker:Docker常用命令
docker信息 ##查看docker容器版本 docker version ##查看docker容器信息 docker info ##查看docker容器帮助 docker --help 镜像列表 ...
- Python 脚本退出
return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行. os._exit(),sys.exit(),exit(),quit()都能够退出当前执行脚本,差别在于os._exit()直接 ...
- leetcode1047
思路分析,这题是在栈分类的题目的,所以顺便复习下数据结构,先用java现成的,就当复习了. 1.判断栈顶和插入的元素是否相等,如果相等,那就出栈,不相等入栈结束 java版: