Python 数据结构第五节
Python 数据结构第五节
我是小白呀
吾本布衣, 出自纽约, 四周大山. 箪瓢屡空, 环堵萧然, 不弊风日. 吾好读书, 滴水石穿, 笨鸟先飞, 求知不断, 方能立足. 不羡孔北海之座上客常满, 但求吾辈架上书常在. 涸辙遗鲋, 暮成枯, 人而无志, 与彼何殊. Self-study Computer Science. 愿为 open source 自效微力. 天高地阔,欲往观之.
因为啥也不会, 默默做一只小白
展开
-
数据结构 第五节 第九课
[toc]二分法查找实现非递归实现:递归实现:测试代码:执行结果:时间复杂度:最优时间复杂度: O(1)最坏时间复杂度: O(logn)原创 2020-10-27 22:30:50 · 1301 阅读 · 0 评论 -
数据结构 第五节 第八课
[toc]搜索搜索是在一个项目集合中找到一个特定的项目的算法过程. 搜索通常的答案是真的或假的, 因为该项目是否存在. 搜索的几种常见方法: 顺序查找, 二分查找, 哈希查找.二分法查找二分查找又称折半查找, 优点是比较次数少, 查找速度快, 平均性能好. 其缺点是要求待查表为有序表, 且插入删除困难. 因此, 折半查找方法适用于不经常变动而查找频繁的有序序列表. 首先, 假设表中元素是按升序排列, 将表中位置记录的关键字与查找关键字比较. 如果两者相等, 则查找成功. 否则, 利用中间位置原创 2020-10-27 21:43:47 · 1100 阅读 · 0 评论 -
数据结构 第五节 第七节
[toc]归并排序归并排序是采用分治法的一个非常典型的应用. 归并排序的思想就是先递归分解数组, 再合并数组.将数组分解最小之后, 然后并两个有序数组, 基本思路是比较两个数组的最前面的数, 谁小就先取谁, 取了后相应的指针就往后移一位. 然后再比较, 直至一个数组为空, 最后把另一个数组的剩余部分复制过来即可.归并排序的分析代码实现:测试代码:执行结果:时间复杂度:最优时间复杂度: O(nlogn)最坏时间复杂度: O(nlogn)稳定性: ..原创 2020-10-27 10:12:05 · 1080 阅读 · 0 评论 -
数据结构 第五节 第六课
[toc]快速排序快速排序 ( 英语: Quicksort ), 又称划分交换排序 ( partition-exchange sort ), 通过一趟排序, 将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行, 以达到整个数据变成有序序列.步骤为:1. 从数列中挑出一个元素, 称为 "基准" ( pivot ),2. 重新排序数列, 所有元素比基准值小的摆放在基准前面, 所有元原创 2020-10-27 01:27:38 · 1206 阅读 · 0 评论 -
数据结构 第五节 第五课
[toc]希尔排序希尔排序 ( Shell Sort ) 是插入排序的一种. 也称缩小量排序., 是直接插入排序算法的一种更高效的改进版本. 希尔排序是非稳定排序算法. 该方法因 DL. Shell 于 1959 年提出而得名. 希尔排序是把记录按下标的一定增量分组, 对每组使用直接插入排序算法排序.随着增量逐渐减少,每组包含的关键词越来越多, 当增量减至 1 时, 整个文件恰好被分成一组, 算法便终止.希尔排序过程希尔排序的基本思想是: 将数组列在一个表中并对列分别进行插入排序. 重复这过原创 2020-10-26 05:15:50 · 1447 阅读 · 0 评论 -
数据结构 第五节 第四课
[toc]插入排序插入排序 ( 英语: Insertion sort ) 是一种简单直观的排序算法. 它的工作原理是通过构建有序序列, 对于未排序数据, 在已排序序列中从后向前扫描, 找到相应位置并插入. 插入排序在实现上, 在从后向前扫描过程中, 需要反复把已排序元素逐步向后挪位, 为最新元素提供插入空间.插入排序分析代码实现:测试代码:执行结果:时间复杂度:最优时间复杂度: O(n) ( 升序排列, 序列已经处于升序状态 )最坏时间复杂度: O(n^2原创 2020-10-26 03:56:47 · 1033 阅读 · 0 评论 -
数据结构 第五节 第三课
[toc]选择排序选择排序 ( Selection sort ) 是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小 ( 大 ) 元素, 放到排序序列的起始位置. 然后, 再从剩余未排序元素中继续寻找最小 ( 大 ) 元素, 然后放到已排序序列的末尾, 直到所有元素均排序完毕.选择排序的主要优点与数据移动有关, 如果某个元素位于正确的最终位置上, 则它不会被移动. 选择排序每次交换一对元素, 它们当中至少有一个将被移动到其最终位置上, 因此对 n 个元素的表进行排序总共进原创 2020-10-25 12:16:29 · 1081 阅读 · 0 评论 -
数据结构 第五课 第二课
[toc]冒泡排序冒泡排序 ( 英语: Bubble Sort ) 是一种简单的排序算法. 它重复地遍历要排序的数列, 一次比较两个元素. 如果他们的顺序错误就把他们交换过来. 遍历数列的工作是重复地进直到没有再需要交换, 也就是说该数列已经排序完成. 这个算法的名字由来是因为越小的元素会经由交换慢慢 "浮" 到数列的顶端.冒泡排序算法的运作如下:比较相邻元素. 如果第一个比第二个大 ( 升序 ), 就交换他们两个.对每一对相邻元素作同样的工作, 从开始第一对到结尾的最后一对. 这步做.原创 2020-10-25 11:18:17 · 1139 阅读 · 0 评论 -
数据结构 第五节 第一课
[toc]排序与搜索排序算法 ( 英语: Sorting algorithm ) 是一种能将一串数据依照特定顺序进行排列的一种算法.排序算法的稳定性稳定性: 稳定排序算法会让原本有相等键值的记录维持相对次序. 也就是如果一个排序算法是稳定的, 当有两个相等键值的纪录 R 和 S, 且在原本的列表中 R 出现在 S 之前, 在排序过的列表中 R 也将会是在 S 之前.当相等的元素是无法分辨的, 比如像是整数, 稳定性并不是一个问题. 然而, 假设以下的数对将要以他们的第一个数字来排序.原创 2020-10-25 08:10:12 · 1057 阅读 · 0 评论