结构与算法
linvim
这个作者很懒,什么都没留下…
展开
-
排序算法(一)---快速插入排序
因为对算法这一项实在是弱爆了,对自己从零开始学习,慢慢记录过程,加油哦 再因为最近在学习python和lua,就分别用两种语言都实现了 快速插入排序 [color=blue]基本思想[/color]:(假设是:从小到大,升序) 每次选择一个元素K插入已排好序的L[1...i]部分,如果L[x]>K,则K插入到L[x]前面, 要对L[x]后面的元素进行后移 [color=bl...原创 2016-05-26 17:13:26 · 276 阅读 · 0 评论 -
排序算法(二)--希尔排序(插入排序)
希尔排序属于插入排序的一种,也称为缩小增量排序 [color=blue]基本思想:[/color] 将待排序数列划分为几个数列,对这几个数列分别进行直接插入排序 [color=blue]具体操作:[/color] 选取增量d(小于数列长度n),将数列划分为n/d个数列,对划分的数列进行直接插入排序 再选取一个增量d1,d1= 1): for i ...2016-05-27 10:37:39 · 108 阅读 · 0 评论 -
排序算法(三)---直接选择排序
选择排序 基本思想: 从待排数列中,选取一个最小(或最大)的数,和[color=green]第1位置[/color]的数交换,再从余下待排序数列中,选取最小(或最大)的一个数,和[color=green]第2个位置[/color]的数交换,直到第n-1(倒数第二个)个元素和第n(末尾)个元素比较 操作方法: [code="java"] 9 5 6 2 1 ...2016-05-27 16:34:42 · 131 阅读 · 0 评论 -
排序算法(四)---堆排序(选择排序)
堆排序:heap sort属于选择排序 堆的定义:有n个元素的序列(k1,k2...kn)满足: 1:Ki =< K2i 且 Ki =< K2i+1 (小顶堆) 或 2:Ki >= K2i 且 Ki >= K2i+1 (大顶堆) i = (1,2,...n/2) 基本思想: 把要排序的n个数的序列组建成一个堆,将堆顶元素输出(这时,堆顶元素也即是根元素是最大...原创 2016-05-31 16:40:44 · 133 阅读 · 0 评论 -
排序算法(五)---冒泡排序(交换排序)
冒泡排序属于交换排序 基本思想: 在待排序数列中,自上而下对相邻的两个元素进行比较和调整,小的上冒,大的下沉 时间复杂度: 最好情况:正序有序,只需比较n次,O(n) 最坏情况:反序有序,需要比较(n-1)+(n-2)+...1次,故O(n*n) 稳定性:稳定 代码示例:bubble_sort.py [code="java"] def bubble_s...2016-05-31 17:05:53 · 209 阅读 · 0 评论 -
排序算法(六)---快速排序(交换排序)
直接排序属于交换排序 基本思想: 1:选1个基准元素(通常是第一个元素或最后一个元素),将待排数列分成两部分,一部分比基准元素小,一部分比基准元素大 2:再对这两部分数列重复步骤1 时间复杂度: 最好情况:O(n*logn) 最坏情况,退化为冒泡排序 O(n*n) 稳定性:不稳定 python代码实现:quick_sort.py [code="java"] de...2016-06-01 11:25:02 · 125 阅读 · 0 评论 -
erlang-Astart算法
[code="java"] %%%------------------------------------------------------------------- %%% Module : astar_trace %%% Author : %%% Description : A星寻路算法 %%%-----------------------------------------...2018-07-02 08:34:08 · 381 阅读 · 0 评论