摘要: 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 range(1, len(list2)): save = list2[i] j = i wh... 阅读全文
posted @ 2013-11-08 22:12 yupeng 阅读(1269) 评论(0) 推荐(0) 编辑
摘要: 1.算法:对于一组关键字{K1,K2,…,Kn}, 首先从K1,K2,…,Kn中选择最小值,假如它是 Kz,则将Kz与 K1对换;然后从K2,K3,… ,Kn中选择最小值 Kz,再将Kz与K2对换。如此进行选择和调换n-2趟,第(n-1)趟,从Kn-1、Kn中选择最小值 Kz将Kz与Kn-1对换,最后剩下的就是该序列中的最大值,一个由小到大的有序序列就这样形成。2.python 代码:def selection_sort(list2): for i in range(0, len (list2)): min = i for j in range(i + 1, ... 阅读全文
posted @ 2013-11-08 19:35 yupeng 阅读(2333) 评论(0) 推荐(1) 编辑
摘要: 1.算法描述:(1)共循环 n-1 次(2)每次循环中,如果 前面的数大于后面的数,就交换(3)设置一个标签,如果上次没有交换,就说明这个是已经好了的。2.代码#!/usr/bin/python# -*- coding: utf-8 -*-def bubble(l): flag = True for i in range(len(l)-1, 0, -1): if flag: flag = False for j in range(i): if l[j] > l[j + 1]: ... 阅读全文
posted @ 2013-11-08 18:28 yupeng 阅读(1787) 评论(0) 推荐(0) 编辑
摘要: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。深度优先算法:(1)访问初始顶点v并标记顶点v已访问。(2)查找顶点v的第一个邻接顶点w。(3)若顶点v的邻接顶点w存在,则继续执行;否则回溯到v,再找v的另外一个未访问过的邻接点。(4)若顶点w尚未被访问,则访问顶点w并标记顶点w为已访问。(5)继续查找顶点w的下一个邻接顶点wi,如果v取值wi转到步骤(3)。直到连通图中所有顶点全部访问过为止。广. 阅读全文
posted @ 2013-11-08 17:40 yupeng 阅读(29225) 评论(1) 推荐(2) 编辑
摘要: python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html下面简要的介绍下:比如有这么一张图: A -> B A -> C B -> C B -> D C -> D D -> C E -> F F -> C可以用字典和列表来构建 graph = {'A': ['B', 'C'], 'B': ['C', 'D'], 'C': ['D'], & 阅读全文
posted @ 2013-11-08 16:40 yupeng 阅读(18909) 评论(0) 推荐(1) 编辑
摘要: 本篇是实现二叉树的三种遍历,先序遍历,中序遍历,后序遍历#!/usr/bin/python# -*- coding: utf-8 -*-class TreeNode(object): def __init__(self,data=0,left=0,right=0): self.data = data self.left = left self.right = rightclass BTree(object): def __init__(self,root=0): self.root = root def is_empty... 阅读全文
posted @ 2013-11-08 16:01 yupeng 阅读(6592) 评论(1) 推荐(1) 编辑
摘要: 树的定义 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序时,可用树表示源程序的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。 树结构的特点是:它的每一个结点都可以有不止一个直接后继,除根结点外的所有结点都有且只有一个直接前驱。 树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树二叉树: 二叉树是由n(n≥0)... 阅读全文
posted @ 2013-11-08 15:45 yupeng 阅读(10431) 评论(0) 推荐(0) 编辑
摘要: 这个在官网中list支持,有实现。补充一下栈,队列的特性:1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征2.队列(queue)是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行。能够增加元素的队列一端称为队尾,可以删除元素的队列一端则称为队首。地址在http://docs.python.org/2/tutorial/datastructures.html#more-on-lists ,下面的官方的代码。关于栈>>> stack = [3 阅读全文
posted @ 2013-11-08 10:55 yupeng 阅读(57155) 评论(1) 推荐(2) 编辑
摘要: 和单链表类似,只不过是增加了一个指向前面一个元素的指针而已。示意图:python 实现代码:#!/usr/bin/python# -*- coding: utf-8 -*-class Node(object): def __init__(self,val,p=0): self.data = val self.next = p self.prev = pclass LinkList(object): def __init__(self): self.head = 0 def __getitem__(self, key): ... 阅读全文
posted @ 2013-11-08 10:35 yupeng 阅读(9596) 评论(0) 推荐(0) 编辑
摘要: 链表的定义: 链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列。也就是说,结点包含两部分信息:一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域。链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点。链表中的最后一个结点没有后继元素,其指针域为空。 如下图所示:单链表的结构:单链表的插入和删除示意图:python实现代码:#!/usr/bin/python# -*- coding.. 阅读全文
posted @ 2013-11-08 10:17 yupeng 阅读(76693) 评论(3) 推荐(2) 编辑