数据结构与算法
小廖同学
个人博客网址http://xiaoliaozi.com/
上面记录了自己学习的一些笔记
欢迎大家访问
展开
-
题目-百钱买百鸡
题目-百钱买百鸡题目描述现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只要求:公鸡、母鸡,小鸡都要有,把100文钱花完,买的鸡的数量正好是100。问:一共能买多少只公鸡,多少只母鸡,多少只小鸡?输入描述输入任何一个整数,即可运行程序。实现代码方案一穷举法while True: try: num = input() for ...原创 2020-02-19 15:52:05 · 590 阅读 · 1 评论 -
五大常用算法
五大常用算法思想前言据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。这五个算法是有很多应用场景的,最优化问题大多可以利用这些算法解决。算法的本质就是解决问题。当数据量比较小时,其实根本就不需要什么算法,写一些for循环完全就可以很快速的搞定了,但是当数据量比较大,场景比较复杂的时候,算法就尤为重要了,本文先归纳这几个算法及应用场景,随后在细...原创 2020-02-18 15:48:50 · 2075 阅读 · 0 评论 -
问题:合唱队
问题:合唱队问题描述计算最少出列多少位同学,使得剩下的同学排成合唱队形问题说明N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1<T2<…<Ti-1Ti...原创 2020-02-18 15:45:39 · 802 阅读 · 0 评论 -
基数排序
基数排序定义基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。算法描述取得数组中的最大数,并取得位数;arr为原始数组,从最低位开始取每个位组成radix数组;对radix进行计数排序(利用计数排序适用于小范围数的特点...原创 2020-02-08 12:04:35 · 117 阅读 · 0 评论 -
桶排序
桶排序定义桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。什么时候最快当输入的数据可以均匀的分配到每一个桶中。什么时候最慢当输入的数据被分配到了同一个桶中。...原创 2020-02-08 12:02:42 · 159 阅读 · 0 评论 -
计数排序
计数排序定义计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。算法描述找出待排序的数组中最大和最小的元素;统计数组中每个值为i的元素出现的次数,存入数组C的第i项;对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);反向填充目标数组:将每个元素i放在新...原创 2020-02-08 11:59:17 · 280 阅读 · 0 评论 -
堆排序
堆排序定义堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。堆是一种完全二叉树, 堆有两种类型: 大根堆 小根堆,两种类型的概念如下:大根堆:每个结点的值都大于或等于左右孩子结点小根堆:每个结点的值都小于或等于左右...原创 2020-02-08 11:44:20 · 127 阅读 · 0 评论 -
归并排序
归并排序定义归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可算法描述把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两...原创 2020-02-08 11:41:35 · 147 阅读 · 0 评论 -
希尔排序
希尔排序定义希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序的基本思想是:将数组列在...原创 2020-02-08 11:37:20 · 142 阅读 · 0 评论 -
快速排序
快速排序定义快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 使用分治法来把一个串(list)分为两个子串(sub-lists) 。...原创 2020-02-08 11:35:07 · 115 阅读 · 0 评论 -
选择排序
选择排序定义**选择排序(Selection sort)**是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当...原创 2020-02-08 10:39:05 · 145 阅读 · 1 评论 -
插入排序
插入排序定义插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 算法描述从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;...原创 2020-02-08 10:36:27 · 163 阅读 · 0 评论 -
冒泡排序
冒泡排序定义冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述比较相邻的元素。如果第一个比第二个大(升序),就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾...原创 2020-02-08 10:19:40 · 165 阅读 · 0 评论 -
常见算法
算法归纳1. 十大排序算法冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)计数排序(Counting Sort)桶排序(Bucket Sort)基数排序(Radix Sort)2. ...原创 2019-12-25 09:41:49 · 140 阅读 · 0 评论 -
算法初步了解
算法初步了解算法概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法是独立存在的一种解决问题的方法和思想。对于算法而言,实现的语言并不重要,重要的是思想。算法可以有不同的语言描述实现版本(如C描述、C++描述、Pyt...原创 2019-12-05 09:49:58 · 287 阅读 · 0 评论 -
数据结构初步了解
数据结构初步了解数据结构简介数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:数组数组是可以在内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。优点:按照索引查询元素速度快按照索引遍历数组方便缺点:...原创 2019-12-04 21:27:49 · 191 阅读 · 0 评论 -
递归函数
递归函数1.递归函数 什么是递归函数? 递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。2.递归的条件须有完成函数任务的语句—个确定是否能避免递归调用的测试一个递归调用语句,该递归调用语句的参数应该逐渐逼近不满足条件,以至最后断绝递归先测试,后递归调用,在递归函数定义中,必须先测试,后递归调用。也就是说,递归调用是有条件的,满足了条件后...原创 2019-10-14 21:28:14 · 449 阅读 · 0 评论