数据结构和算法
文章平均质量分 59
blackboydec
开博客啦~~~~@~@
展开
-
左程云直播8.7-互为变形词、旋转词、manacher算法
1 互为变形词-str1中的词重新组合成为str2(种类+个数)【题目三】 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1与str2互为变形词。请实现函数判断两个字符串是否互为变形词。 【举例】 str1=”123”,str2=”231”,返回true。 str1=”123”,str2=”2331”,返回false。 分析:原创 2017-08-08 18:36:14 · 835 阅读 · 0 评论 -
1 线性表
1 抽象数据类型理解抽象数据类型 我们对已有的数据类型进行抽象,就有了抽象数据类型。抽象数据类型(Abstract Data Type,ADT)是指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。比如1+1=2这样一个操作,在不同CPU的处理上可能不一样,但由于其定义的数学特性相同,所以在计算机编程者看来,它们都是相原创 2017-08-16 07:42:06 · 1917 阅读 · 1 评论 -
两个有序数组合起来求第k小的数+左老师专访ACM大神(笔记)8月5日斗鱼直播实录
1.长度相等的两个有序数组寻找上中位数注:上中位数1 2 3 4 5 6为3(偶数两个中位数为前面那个) 思路:去掉不可能为上中位数的,剩下的简化组合求上中位数。1.1 奇数序列 位置 位置 位置 位置 位置 1 2 3 4 5 1’ 2’ 3’ 4’ 5’数字代表第几个数,求上中位数(第5小的数)case1: 3=3’ 则3或者3’为上原创 2017-08-07 08:39:51 · 962 阅读 · 0 评论 -
栈的练习题附加
1 进制转换1.1 利用栈的特点,将用户输入的十进制数转换为二进制数。#include<stdio.h>#include<stdlib.h>#include<malloc.h> #define M 100typedef int datatype;typedef struct{ datatype data[M]; int top; }seqstack;void InitSta原创 2017-08-21 16:15:37 · 706 阅读 · 0 评论 -
2.1 栈的练习题
1 进制转换-利用顺序栈实现为什么常用二进制,八进制,十六进制答:一个字节(8bit)刚好用两个十六进制数可以表示完整,也大大的节省了显示空间。早期的计算机系统都是三的倍数,所以用八进制比较方便。为什么要利用栈在进行二进制到八进制的转换时,要将二进制数的每三位抓换成一个八进制数来表示,然后按顺序输出即可。转换代码//Bin2Dec 二进制转换到十进制#include <stdio.h>#i原创 2017-08-21 19:49:48 · 944 阅读 · 0 评论 -
2 栈和队列
1 栈1.1 栈的定义栈是一种重要的线性结构,是线性表的一种具体形式。栈(Stack)是一个后进先出(Last in first out,LIFO)的线性表,它要求只在表尾进行删除和插入操作。表尾称为栈的栈顶(top),表头称为栈底(bottom)。栈的插入操作(Push),叫做进栈,也称为压栈,入栈。栈的删除操作(Pop),叫做出栈,也称为弹栈。因为栈的本质是一个线性表,线性表有两种存储原创 2017-08-21 15:07:08 · 416 阅读 · 0 评论 -
3 递归和分治的思想
汉诺塔和八皇后原创 2017-08-22 16:43:32 · 500 阅读 · 0 评论 -
1.1链表拓展题
循环链表题1 约瑟夫环背景据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。 然而Josephus和他的朋友并不想遵从,Josep原创 2017-08-21 11:28:25 · 434 阅读 · 0 评论 -
5 树
1 树1.1 树的定义树(Tree)是n(n>=0)个结点的有限集。当n=0时成为空树,在任意一棵非空树中:有且仅有一个特定的称为根(Root)的结点; 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。结点和度每一个圈圈我们就称为树的一个结点。结点拥有的子树数称为结点的度-(Degree),树的度取原创 2017-08-22 17:42:50 · 440 阅读 · 0 评论 -
排序算法时间复杂度、空间复杂度、稳定性比较
排序算法分类排序算法比较表格填空 排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定 冒泡排序 :————-: :—–: :—–: :—–: 选择排序 :————-: :—–: :—–: :—–: 直接插入排序 :————-: :—–: :—–: :—–: 归并排序 :————-: :—–: :原创 2017-07-30 21:33:22 · 113968 阅读 · 34 评论 -
桶排序
最快最简单的排序——桶排序 在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。 首先出场的我们的主人公小哼,上面这个可爱的娃就是啦。期末考试完了老师要将同学们的分数按照从高到低排序。小哼的班上只转载 2017-08-03 20:55:00 · 297 阅读 · 0 评论 -
招聘相关
趋势 思杰原创 2017-08-14 15:10:21 · 358 阅读 · 0 评论 -
基数排序
基数排序(radix sort)真言宿舍很冷,但是为了将来,什么苦都得忍着,忍方可成大事。主题给一堆相同具有相同位数的数排序。这些数有一个共同的特点具有相同的位数。思路举个例子呗,例子最好理解了。比如有如下数据,{329,457,657,839,436,720,355}.这些数字都是三位的,也就是具有相同的位数。我们知道,对于一位数字只能是从0~9里的一个,一共有十种可能,对于单位的数字我们可以转载 2017-08-09 22:47:13 · 310 阅读 · 0 评论 -
排序算法的选择
快排工程应用几乎有序-改进后的堆排序 解析: O(N) 计数排序和基数排序,由于不知道数组范围,不考虑。 O(N^2) 冒泡排序,选择排序,和序列是否有序无关。插入排序O(N*K) O(N*logN) 快速排序和归并排序也和原数组是否有序无关。改进后的堆排序是最佳。 重复元素判断 解析: (桶排序) 本题:先排序再判断。空间复杂度为O(1)的排序有: 选择堆排序原创 2017-08-09 23:17:22 · 267 阅读 · 0 评论 -
排序算法面试题
荷兰国旗问题 当遍历位置和2区域位置重合时停止原创 2017-08-10 00:46:36 · 323 阅读 · 0 评论 -
八大排序算法图文动态 讲解
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。八大排序算法:点击打开链接算法一:插入排序 插入排序示意图插入排序是一种最简单直观的排序算法,它的工作原理是通转载 2017-08-02 22:44:33 · 252 阅读 · 0 评论 -
快速排序
上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。转载 2017-08-03 20:52:17 · 221 阅读 · 0 评论 -
计数排序和基数排序
比较排序:【排序一】插入排序(直接插入排序&&希尔排序)【排序二】选择排序(选择排序&&堆排序)【排序三】交换排序(冒泡排序&&快速排序)【排序四】归并排序一、计数排序1、基本思想 给定一组要排序的序列,找出这组序列中的最大值,然后开辟一个最大值加1大小的数组,将这个数组里面的元素全部置零,然后用这个数组统计出要排序的序列中各个元素出现的次数。等到统计完成的时候,排序就已经完成了。图转载 2017-08-10 20:22:48 · 916 阅读 · 0 评论 -
KMP算法自己整理(精简版)
1. 暴力匹配算法问题:有一个主串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?思路:如果用暴力匹配的思路,并假设现在主串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S[i]! = P[j]),令i = i - j +1(主串从模式串P的下一个字符开始),j = 0(模式原创 2017-08-14 02:14:15 · 958 阅读 · 0 评论 -
0 数据结构和算法绪论
1 目录2 数据结构程序设计 = 数据结构 + 算法数据元素相互之间存在的一种或多种特定关系的集合。我们把数据结构分为逻辑结构和物理结构(数据结构核心)。逻辑结构:是指数据对象中数据元素之间的相互关系。物理结构:是指数据的逻辑结构在计算机中的存储形式。2.1 四大逻辑结构集合结构 线性结构 树形结构 图形结构 2.2 两大物理结构根据物理结构的定义,我们实际上研究的的就是如何把数据元素存储原创 2017-08-16 09:41:42 · 437 阅读 · 0 评论