- 浏览: 247125 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (127)
- vim (3)
- python (44)
- pymysql (1)
- mysql (9)
- macvim (1)
- erlang (3)
- twisted (0)
- tornado (5)
- django (7)
- postgresql (5)
- sql (1)
- java (7)
- tech (4)
- cache (1)
- lifestyle (3)
- html (1)
- ubuntu (2)
- rabbitmq (1)
- algorithm (8)
- Linux (4)
- Pythonista (1)
- thread (1)
- sort (6)
- 设计模式 (1)
- search (1)
- Unix (6)
- Socket (3)
- C (2)
- web (1)
- gc (1)
- php (10)
- macos (1)
最新评论
-
2057:
这个程序有bug。
查找算法学习之二分查找(Python版本)——BinarySearch -
dotjar:
NB
一个Python程序员的进化[转]
插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
算法描述:
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找排序。
代码:
参考资料:
http://zh.wikipedia.org/wiki/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F
算法导论 第二章
最差时间复杂度:O(n^2) |
最优时间复杂度:O(n) |
平均时间复杂度:O(n^2) |
算法描述:
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
- 1. 从第一个元素开始,该元素可以认为已经被排序
- 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 5. 将新元素插入到该位置后
- 6. 重复步骤2~5
如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找排序。
代码:
#!/usr/bin/env python #-*-encoding:utf-8-*- #InsertionSort def insertion_sort(param): p_len = len(param) for i in range(1,p_len): key = param[i] for j in range(1,i+1)[::-1]: if j>0 and key < param[j-1]: param[j] = param[j-1] param[j-1] = key return param def main(): param = [5,7,2,9,1] print insertion_sort(param) if __name__=="__main__": main()
参考资料:
http://zh.wikipedia.org/wiki/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F
算法导论 第二章
发表评论
-
macos 10.9.2 clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command
2014-03-25 19:13 1759方法总是有的,当然需要你去寻找。 当然如果花费太多的时间在一件 ... -
PostgreSQL psycopg2:IndexError: tuple index out of range
2014-01-09 17:04 2230Postgresql psycopg2使用like查询的时候 ... -
Python 迭代器和生成器
2013-10-15 23:09 2849迭代器 迭代器只不过是一个实现迭代器协议的容器对象。它基于两个 ... -
Python时间模块
2013-10-15 23:03 3469time模块 时间模块中最常用的一个函数就是获取当前时间的函数 ... -
Python装饰器
2013-10-15 22:59 1568编写自定义装饰器有许多方法,但最简单和最容易理解的方法是编写一 ... -
python list
2013-10-15 22:56 1254简单总结以及整理如下: >>> dir( ... -
Python Excel
2013-09-10 17:21 975安装lib easy_install xlrd def ... -
排序算法学习(python版本)之堆排序(HeapSort)
2013-07-01 22:54 1996Contains: 堆排序以及堆排序的应用 堆排序(Heaps ... -
python range xrange
2013-06-25 23:30 1149引用Help on built-in function ran ... -
python class
2013-06-25 00:54 1829引用类是创建新对象类 ... -
AttributeError: 'module' object has no attribute 'SendCloud'
2013-06-05 11:46 7083网上查了下 意思是说你命名的文件名不能和lib重名,这样会导 ... -
python string
2013-05-07 23:44 2198如果这就是字符串,这本来就是字符串 首先看下字符串的方法 ... -
Python property
2013-03-29 19:56 0由于之前有总结过,可以参考http://2057.iteye. ... -
python tips
2013-03-28 23:57 8831、enum #!/usr/bin/env python ... -
python decorators
2013-03-28 23:36 1365Contains: 1、decorators 2、funct ... -
python closures
2013-03-28 22:09 1190Closure:如果在一个内部函数里,对在外部作用域(但不是在 ... -
Python map、filter,reduce介绍
2013-03-28 22:02 13091、filter(function,iterable) 引用C ... -
Python __new__ 、__init__、 __call__
2013-03-26 23:49 5351Contains: __new__: 创建对象时调用,返回当 ... -
Python socket简介
2013-03-25 23:42 2168自豪地使用dir和help. Python 2.7.2 ( ... -
Tornado ioloop源码简析
2013-03-21 00:18 2849#!/usr/bin/env python #-*-en ...
相关推荐
# sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() #计数排序 # sort.quickSort() #快速排序 该排序算法把每次的排序结果都列出来,可供初学...
**插入排序(Insertion Sort)**是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到...
三、插入排序(Insertion Sort) 插入排序类似于打扑克牌,每拿到一张牌就找到它在已排序牌堆中的正确位置并插入。在Python中,插入排序通常使用一个嵌套循环,外层循环控制未排序部分,内层循环找到插入位置并将...
通过学习和实践这些排序算法的Python实现,不仅可以提升编程技巧,还能加深对算法的理解,有助于解决实际问题。在代码练习中,可以针对不同的数据结构和场景,对比这些算法的性能,选择最适合的排序方法。同时,了解...
2. 插入排序(Insertion Sort): 插入排序的工作原理是将未排序的元素逐个插入到已排序的序列中,保持排序状态。Python实现插入排序时,可以使用一个for循环遍历待排序元素,然后通过while循环找到正确位置并插入。...
本文将详细讨论在Python中实现的三种基本排序算法:冒泡排序、选择排序和插入排序,这些都是`light9m6`提供的教学资源。 首先,我们来了解冒泡排序(Bubble Sort)。这是一种简单直观的排序算法,它重复地遍历要...
希尔排序,也称为递减增量排序算法,是插入排序的一种更高效的改进版本。它首先取一个较大的步长,逐步缩小步长直到为1,对每个步长进行插入排序。Python实现代码如下: ```python def shell_sort(list): n = len...
### 插入排序算法概述 #### 一、概念与特点 插入排序(Insertion Sort)是一种简单的比较排序算法。...通过对其实现的理解,可以帮助开发者更好地掌握排序算法的基本概念,并为学习更复杂的排序算法打下基础。
2. 插入排序(Insertion Sort):插入排序将未排序的元素逐个插入到已排序的部分,保持已排序部分的有序性。它的平均时间复杂度为O(n^2),但在部分有序的数组中表现良好。 3. 选择排序(Selection Sort):选择排序...
2. 插入排序(Insertion Sort):插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。其平均和最好情况的时间复杂度为O(n^2),但在处理部分有序的数据时表现...
在实际编程中,Python提供了内置的`sorted()`函数和`list.sort()`方法,它们通常使用更高效的排序算法(如Timsort),但在学习和理解排序算法的过程中,插入排序是一个很好的起点。通过阅读和分析“Python实现插入...
在Python编程领域,排序算法是数据结构与算法学习中的核心部分。这些算法处理数组或列表中的元素,使得它们按照特定顺序排列。可视化排序算法能够帮助我们更好地理解它们的工作原理,而Matplotlib是一个强大的Python...
2. 插入排序(Insertion Sort):它的工作原理类似于手动排序扑克牌,每次将一个未排序的元素插入到已排序的序列中的正确位置。 3. 选择排序(Selection Sort):每次找出未排序部分的最大(或最小)元素,放到已...
直接插入排序是一种基础且常用的排序算法,尤其在处理小规模或者部分有序的数据时表现出较高的效率。这个算法的主要思想是将一个记录(数组中的一个元素)插入到已经排序好的有序序列中,从而得到一个新的、记录数加...
在计算机科学领域,排序算法是数据结构与算法课程中的重要组成部分,它们对于数据的组织、检索和处理至关重要。本文将深入探讨两种基本的排序...通过学习这两种排序算法,可以为进一步学习更复杂的算法打下坚实的基础。
### 插入排序知识点详解 #### 一、插入排序简介 插入排序是一种直观且易于实现的排序算法。其工作原理类似于人们日常生活中整理牌时所采用...此外,由于其实现简单,插入排序也常被用来作为学习排序算法的基础案例。
直接插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。这种排序算法适用于小规模或者部分有序的数据集,它的主要步骤包括比较...
在这个压缩包中,包含的是关于插入排序的基本概念、希尔排序(插入排序的一种改进版本)的详细讲解,以及对应的Python源代码实现,每行代码都有清晰的注释,方便理解。 ### 基本插入排序 基本插入排序是对未排序的...
3. **插入排序** (Insertion Sort) 插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。时间复杂度在最好情况(已排序)下为O(n),最坏情况(逆序)下为O(n^2)。 4. **...