![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
热血程序汪
这个作者很懒,什么都没留下…
展开
-
选择排序(C语言)
选择排序是在一组待排数据中,首先假设第一个数最小,将它依次与其他数相比,如果后面有其他数比它更小,则将新的数作为最小的数,一趟排序结束后,将最小的数排到第一个 代码如下: 排序后:原创 2017-02-27 20:26:31 · 279 阅读 · 0 评论 -
hash简介
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈原创 2017-12-13 11:32:07 · 213 阅读 · 0 评论 -
二叉树的递归和非递归遍历
二叉树的遍历:前序遍历,中序遍历,后序遍历,每种遍历又分为递归和非递归算法,递归遍历较为简单,容易理解;非递归需要用到栈,相对麻烦一些。 typedef struct node{ int data; struct * lchild,*rchild; }*BiTree, BiTNode 首先是前序遍历: 递归算法: void转载 2017-03-16 19:32:26 · 172 阅读 · 0 评论 -
数组中第一个出现一次的字符
在数组中找出第一个只出现一次的字符,例如 char [] s = {'a','b','c','a','c'}; 输出‘b’ 解法一: 从头开始扫描数组,取出某个字符,分别与后面的字符比较,如果没有相等的,则可以返回,反之,继续扫描; 每个字符都与后面的O(n)个字符比较,算法的复杂度为O(n^2); 解法二: 查找的字符的次数,可以声明原创 2017-11-29 16:51:48 · 287 阅读 · 0 评论 -
创建单链表的头插法和尾插法
创建单链表分为头插法和尾插法: 二者的事件复杂度相同,但是由于头插法插入数据和链表生成的顺序相反,故选取二者时要根据实际需求使用。原创 2017-03-17 11:53:13 · 730 阅读 · 1 评论 -
快速排序(C语言)
快速排序是一种高级排序,其原理是在要排列的数据中,选择第一个数或者最后一个数作为比较参数,然后从序列的左右两边分别扫描,如果从右边扫描到比比较参数小,从左边扫描到比比较参数大的数,将他们交换位置,继续扫描,直到两个扫描指针相遇,然后把比较参数放到相遇位置。这时该数列被分为左右两个部分,左边的比它小,右边的比它大,这时再用同样的办法,分别对左右两边进行比较,直到排序完成。 代码:原创 2017-02-27 21:35:18 · 178 阅读 · 0 评论 -
数字反转
将输入的数字反转,123输出321,-123输出-321原创 2017-04-08 20:09:19 · 444 阅读 · 0 评论 -
汉诺塔问题 递归
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。原创 2017-04-08 17:00:58 · 296 阅读 · 0 评论 -
约瑟夫环
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 采用循环单链表实现:原创 2017-04-08 15:59:30 · 163 阅读 · 0 评论 -
归并排序C语言
原创 2017-04-08 08:53:22 · 217 阅读 · 0 评论 -
插入排序(C语言)
插入排序是选择一个数作为比较参数,从第二个数开始与第一个数比较,若是比第一个数小,则将第一个数后移一位,将较小的那个数插入到前面,完成第一次排序; 然后取第三个数与前两个数相比,以此类推。 代码如下: 运行后:原创 2017-02-27 21:08:33 · 261 阅读 · 0 评论 -
冒泡法排序(C语言)
数据结构中的排序算法中,冒泡法是比较简单的排序算法,能将一串数字通过逐个比较的方式,将大的数排到下面,小的排到上面,像气泡上浮,由此得名。 运行:原创 2017-02-26 21:33:40 · 482 阅读 · 0 评论 -
滑动窗口leetcode
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。 返回滑动窗口最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 ----------...翻译 2019-02-13 15:02:14 · 189 阅读 · 0 评论