在具体算法之前,首先来看一下排序算法衡量的标准: 比较:比较两个数的大小的次数所花费的时间. 交换:当发现某个数不在适当的位置时,将其交换到合适位置花费的时间. 冒泡排序(Bubble Sort) 这是一个面试经常考的排序,虽然简单,但是要保证一点都不出错也不简单. 冒泡,顾名思义,每一次冒出一个泡泡出来,这个泡泡是剩余数中最大的那个数.所以,如果有n个数待排序,那么需要冒(n-1)次泡泡.即最外层循环需要len(list)-1次. 每一次冒泡的过程即内层循环.每次取一对数(pair),按顺序从…
选择排序(select_sort)是一个基础排序,它主要通过查找已给序列中的元素的最大或者最小元素,然后将其放在序列的起始位置或者结束位置,并通过多次这样的循环完成对已知序列的排序,在我们对n个元素进行操作时,我们至少需要n-1次. def select_sort(list): n=len(list) #进行n-1次操作 for i in range(n-1): min_dex=i #记录最小的位置 for j in range(i+1,n): #从i+1选取最小位置 if list[j]<li…
def shell_sort(alist): n=len(alist) gap= int(n / 2) #步长 while gap>0: for i in range(gap,n): j=i while j>=gap and alist[j-gap] > alist[j]: alist[j-gap],alist[j]=alist[j],alist[j-gap] #交换值 j-=gap gap=int(gap/2) #新的步长 alist=[11,33,44,55,66,9,72,86,9…
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对python相对比较熟悉,而且感觉用python实现数据结构相对容易一点.就把这个月来学到的一些,整理一下做个月底总结. 涉及到的书有<啊哈算法>.<复杂性思考>.<数据结构基础(C语言版) 第二版>.<Python Algorithms>,以及其他大牛们的网上教…
在数据结构那一块,搜索有顺序查找/二分查找/hash查找,而排序有冒泡排序/选择排序/插入排序/归并排序/快速排序.如果遇到数据量和数组排列方式不同,基于时间复杂度的考虑,可能需要用到混合算法.如果用C语言自己写,是一个很头疼且门槛很高的过程,python却用很简单的方式,让这类算法人人可用. 排序的话,python采用了一个sort函数,这个函数用的是一个适应性强的.稳定的.自然的归并算法,名为timsort.而查找,用字典,时间复杂度可以降低到O(1),而字典的实现方式,则是利用了hash函…
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义域是输入数据的长度,值域通常是执行步骤数量(时间复杂度)或者存储器位置数量(空间复杂度).算法分析是计算复杂度理论的重要组成部分. 本文地址:http://www.cnblogs.com/archimedes/p/python-datastruct-algorithm-analysis.html,转…
python数据结构之直接插入排序 #-*-encoding:utf-8-*- ''' 直接插入排序: 从序列的第二个元素开始,依次与前一个元素比较,如果该元素比前一个元素大, 那么交换这两个元素.该算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方法. ''' def InsertSort(L): for i in range(1,len(L)): key = L[i] j = i - 1 while j >= 0: if L[j] > key: L[j+1] = L[j]…
Python 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构. 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 以下是 Python 中列表的方法: 方法 描述 list.append(x) 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]. list.extend(L) 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L. list.insert(i,…
Python实现的选择排序算法原理与用法实例分析 这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋友可以参考下 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟…
python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 ls = list([5, 2, 3, 1, 4]) new_ls = sorted(ls)或者使用ls.sort()即可,直接将ls改变 print(new_ls) 需要注意:sort()方法仅定义在list中,而sorted()方法对所有的可迭代序列都有效 并且针对任何的可迭代序列,sorted()都是返回一个list, print(sorted({8: 'D', 2: 'B'…