python插入排序算法实例分析
本文实例讲述了python插入排序算法。分享给大家供大家参考。具体如下:
def insertsort(array): for removed_index in range(1, len(array)): removed_value = array[removed_index] insert_index = removed_index while insert_index > 0 and array[insert_index - 1] > removed_value: array[insert_index] = array[insert_index - 1] insert_index -= 1 array[insert_index] = removed_value
另外一个版本:
def insertsort(array): for lastsortedelement in range(len(array)-1): checked = lastsortedelement while array[checked] > array[lastsortedelement + 1] and checked >= 0: checked -= 1 #Insert the number into the correct position array[checked+1], array[checked+2 : lastsortedelement+2] = array[lastsortedelement+1], array[checked+1 : lastsortedelement+1] return array
希望本文所述对大家的Python程序设计有所帮助。
相关推荐
-
Python实现快速排序和插入排序算法及自定义排序的示例
一.快速排序 快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 快速排序,递归实现 def quick_sort(num_list): """ 快速排序 """ if num_li
-
Python 冒泡,选择,插入排序使用实例
最近学习了python基础,写一下3大排序练练手: 复制代码 代码如下: ''' Created on 2013-8-23 @author: codegeek ''' //冒泡排序 def bubble_sort(seq): for i in range(len(seq)): for j in range(i,len(seq)): if seq[j] < seq[i]: tmp = seq[j]
-
Python中使用插入排序算法的简单分析与代码示例
问题描述 将一组随机排列的数字重新按照从小到大的顺序排列. 插入算法 每次从数组中取一个数字,与现有数字比较并插入适当位置. 如此重复,每次均可以保持现有数字按照顺序排列,直到数字取完,即排序成功. 这很像打牌时的抓牌情况, 第一个条件:保持手上的牌的顺序是正确的 第二个条件:每次抓到新的牌均按照顺序插入手上的牌中间. 保证这两条不变,那么无论抓了几张牌,最后手上的牌都是依照顺序排列的. Python 实现: def insertion_sort(n): if len(n) == 1: retu
-
python 实现插入排序算法
复制代码 代码如下: #!/usr/bin/python def insert_sort(array): for i in range(1, len(array)): key = array[i] j = i - 1 while j >= 0 and key < array[j]: array[j + 1] = array[j] j-=1 array[j + 1] = key if __name__ == "__main__": array = [2, 4, 32, 64,
-
python插入排序算法的实现代码
1.算法:设有一组关键字{ K 1 , K 2 ,-, K n }:排序开始就认为 K 1 是一个有序序列:让 K 2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列:然后让 K 3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列:依次类推,最后让 K n 插入上述表长为 n-1 的有序序列,得一个表长为 n 的有序序列. 2.python插入排序代码 复制代码 代码如下: def insertion_sort(list2): for i in ra
-
python插入排序算法实例分析
本文实例讲述了python插入排序算法.分享给大家供大家参考.具体如下: def insertsort(array): for removed_index in range(1, len(array)): removed_value = array[removed_index] insert_index = removed_index while insert_index > 0 and array[insert_index - 1] > removed_value: array[insert
-
Python快速排序算法实例分析
本文实例讲述了Python快速排序算法.分享给大家供大家参考,具体如下: 快速排序的时间复杂度是O(NlogN) 算法描述: ① 先从序列中取出一个数作为基准数 ② 分区过程, 将比这个数大的数全部放到它的右边, 小于或等于它的数全部放到它的左边 ③ 再对左右区间重复第二步, 直到各区间只有一个数 假设对 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 进行排序, 首先在这个序列中随便找一个基准数(用来参照), 比如选择 6 为基准数, 接下来把所有比基准数大的数放在6的右边, 比6
-
C++插入排序算法实例详解
本文实例为大家分享了C++插入排序算法实例的具体代码,供大家参考,具体内容如下 基本思想 每次将一个待排序的元素,按其大小插入到已经排好序的子序列的适当位置,知道全部元素插入完成为止. 直接插入排序 1.排序思路 arr[0...i-1]为有序区(刚开始时i=1,有序区只有arr[0]一个元素),arr[i...size]为待排序区,每次将待排序区的第一个元素arr[i]插入到有序区中的适当位置,每趟操作都使有序区增加一个元素,待排序区减少一个元素. 2.排序算法 void InsertSort
-
Java的Arrays.sort()方法排序算法实例分析
暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序...其实不全对.让我们分析个究竟: // Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD) { //QUICKSORT_THRESHOLD = 286 sort(a, left, right, true); return; } 数组一进来,会碰到第一个阀值QUICK
-
Python温度转换实例分析
本文主要研究的是Python语言实现温度转换的相关实例,具体如下. 代码如下: #TempConvert.py val=input("请输入带有温度表示符号的温度值(例如:32c)") if val[-1] in ["C","c"]: f=1.8*float(val[0:-1])+32 print("转换后的温度为:%.2fF"%f) elif val[-1] in ["F","f"]:
-
PHP折半(二分)查找算法实例分析
本文实例讲述了PHP折半(二分)查找算法.分享给大家供大家参考,具体如下: 折半查询只适用于已经按照正序或者逆序排序的数组,字符串等: 算法: 先取数组的中间位置,无中间位置,则向下取整: 从中间进行折半,大小判断,进入前半段或者后半段: 再对前半段或者后半段进行同样的折半查询, 直到查询到匹配的字符,才停止(本例用break,如果置于函数中,return即可) php实现的代码如下: <?php $arr = array(1,2,3,4,5,6,7,8,9,10);//数组 $key = 4;
-
python动态规划算法实例详解
如果大家对这个生僻的术语不理解的话,那就先听小编给大家说个现实生活中的实际案例吧,虽然现在手机是相当的便捷,还可以付款,但是最初的时候,我们经常会使用硬币,其中,我们如果遇到手中有很多五毛或者1块钱硬币,要怎么凑出来5元钱呢?这么一个过程也可以称之为动态规划算法,下面就来看下详细内容吧. 从斐波那契数列看动态规划 斐波那契数列:Fn = Fn-1 + Fn-2 ( n = 1,2 fib(1) = fib(2) = 1) 练习:使用递归和非递归的方法来求解斐波那契数列的第 n 项 代码如下: #
-
Python二分法搜索算法实例分析
本文实例分析了Python二分法搜索算法.分享给大家供大家参考.具体分析如下: 今天看书时,书上提到二分法虽然道理简单,大家一听就明白但是真正能一次性写出别出错的实现还是比较难的,即使给了你充足的时间,比如1小时.如果你不是特别认真的话,可能还是会出一些这样那样的错误,所以就尝试了自己去实现一下,看能否一次通过,结果自然不言而喻,虽然用的时间不长,但是我失败了,呵呵. 个人觉得失败的最主要原因是自己没有认真的先想好这个思路和可能出现的分支情况,而是直接凭主观臆想就去写代码了,完全正中书上所说的行
-
C#实现插入排序算法实例
本文实例讲述了C#实现插入排序算法的方法.分享给大家供大家参考.具体分析如下: 这个算法的逻辑如下: 1.第一个元素可以看做是已经排序好的小数组,第二个元素和这个小数组比较,放到合适的位置,组成新的已排序的小组数. 2.第三个元素在和前面组成的新的小数组比较,决定排在什么位置,如此循环,直到结束. public void Sort(int[] data) { insertOnSort(data,1); } private void insertOnSort(int[] data, int ind
-
Python贪心算法实例小结
本文实例讲述了Python贪心算法.分享给大家供大家参考,具体如下: 1. 找零钱问题:假设只有 1 分. 2 分.五分. 1 角.二角. 五角. 1元的硬币.在超市结账 时,如果 需要找零钱, 收银员希望将最少的硬币数找给顾客.那么,给定 需要找的零钱数目,如何求得最少的硬币数呢? # -*- coding:utf-8 -*- def main(): d = [0.01,0.02,0.05,0.1,0.2,0.5,1.0] # 存储每种硬币面值 d_num = [] # 存储每种硬币的数量 s
随机推荐
- 详解在Angularjs中ui-sref和$state.go如何传递参数
- 全面了解Nginx中的HTTP协议相关模块配置
- Java中JSON字符串与java对象的互换实例详解
- Java语言实现简单FTP软件 FTP软件远程窗口实现(6)
- PHP把小数转成整数3种方法
- 减少C++代码编译时间的简单方法(必看篇)
- 基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
- jq的get传参数在utf-8中乱码问题的解决php版
- 基于JavaScript实现智能右键菜单
- jquery实现保存已选用户
- Ajax通过XML异步提交的方法实现从数据库获取省份和城市信息实现二级联动(xml方法)
- C#绝对路径拼接相对路径的实例代码
- 关于近来网上大量泛滥的灰鸽子病毒(Huigezi、Gpigeon)介绍和查杀大全附专杀工具
- 动态生成页面元素的代码
- .NET的动态编译与WS服务调用详解
- 深入理解js promise chain
- Nagios的安装与使用详细教程
- 解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题
- 详解shiro缓存机制
- JavaScript实现数值自动增加动画