数据结构
zhq1186
这个作者很懒,什么都没留下…
展开
-
插入排序Python实现--《数据结构》(C语言版)严蔚敏
直接插入排序 直接插入排序的算法时间复杂度为 O(n2)O(n2)O(n^2) ,该算法是稳定的。我们下面直接给个直观的例子看看他是怎么操作的: 接下来我们给出Python代码(Python3.6环境):# -*- coding: utf-8 -*-def insert_sort(alist): n = len(alist) for i in r...原创 2018-04-19 19:53:00 · 252 阅读 · 0 评论 -
希尔排序Python实现--《数据结构》(C语言版)严蔚敏
希尔排序 希尔排序的时间复杂性在 O(nlog2n)O(nlog2n)O(nlog2n) 和 O(n2)O(n2)O(n^2) 之间,大致为 O(n1.3)O(n1.3)O(n^{1.3}) ,希尔排序是不稳定的。我们下面直接给个直观的例子看看他是怎么操作的: 下面我们给出他的Python代码(Python3.6)实现:def ShellInsertSort(al...原创 2018-04-19 20:05:12 · 262 阅读 · 0 评论 -
快速排序Python实现--《数据结构》(C语言版)严蔚敏
快速排序 快速排序的时间复杂性在 O(knlogn)O(knlogn)O(knlogn) 快速排序被认为是,在所有同数量级(O(knlogn))(O(knlogn))(O(knlogn)) 的排序算法中,其平均性能最好 。 它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有...原创 2018-04-19 20:23:46 · 263 阅读 · 0 评论 -
堆排序Python实现--《数据结构》(C语言版)严蔚敏
堆排序 堆排序属于选择排序类别,其算法步骤是:1、从无序序列建立最大堆(升序就构造最大堆)或者最小堆(降序就构造最小堆)2、利用构建的堆进行排序。 堆排序的平均时间复杂度和最坏时间复杂度均为在 O(nlogn)O(nlogn)O(nlogn)。堆排序方法对记录数较少的文件并不值得提倡,对n较大的文件很有效。 下面我们直接给个直观的例子看看他是怎么操作的。 例如,给...原创 2018-04-19 20:53:11 · 613 阅读 · 1 评论 -
归并排序Python实现--《数据结构》(C语言版)严蔚敏
归并排序 “归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。假设初始序列有n个有序的子序列,每个序列的长度为1,然后两两归并,得到n2n2\frac{n}{2}个长度为2或1的有序子序列,再两两归并…,如此重复,直到得到一个长度为n的有序序列为止。 归并排序的时间复杂度在 O(nlogn)O(nlogn)O(nlogn)。我们下面直接给个直观的例子看看他是怎么操作的,2-...原创 2018-04-19 21:06:23 · 317 阅读 · 4 评论 -
各种内部排序方法的比较讨论
注:本文主要参考严蔚敏——《数据结构》(C语言版)整理而成。 排序方法 平均时间 最坏情况 辅助存储 简单排序 O(n2)O(n2)O(n^2) O(n2)O(n2)O(n^2) O(1)O(1)O(1) 快速排序 O(nlogn)O(nlogn)O(nlogn) O(n2)O(n2)O(n^2) O(logn)O(logn)O(l...原创 2018-04-24 21:58:08 · 971 阅读 · 0 评论 -
动态规划--最大回文子串(Python版)
最大回文子串问题 最大回文子串问题是一个经典的动态规划问题,所谓回文串,意思是正序和倒序是一样的,比如“goog”,倒过来还是“goog”。在牛客网上有这个题,题目描述如下: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。 例如输入分别为”abcda”,”google”,则输出为2,2。原串变为“aba”...原创 2018-04-21 19:12:41 · 2522 阅读 · 2 评论