数据结构
篱落雨沫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构--链表的基本操作
1.链表的初始化 2.尾插 3.头插 4.尾删 5.头删 6.给定节点删除 7.按值查找 8.按值删除,只删除遇到的第一个 9.按值删除,删除所有 10.销毁 #include<stdio.h> #include<stdlib.h> #include<assert.h> // 值类型 typedef int DataType; ty...原创 2018-09-25 21:30:28 · 246 阅读 · 0 评论 -
数据结构--单链表实现约瑟夫环
约瑟夫环:假设从第一个结点开始报数1,当数到k时结点被删除,下一个结点重新从1开始数,数到k时结点被删除,下一个再次从1开始数,一次循环,直到剩余一个结点,即为所求结点。 如下图所举例子:假设8个结点形成一个约瑟夫环,每数到3则删除结点,再从1开始,循环进行 ,最终得到所求结点 1.从1号节点开始报数,当为3时删除3号结点; 2.从4号结点开始报数,当为3时删除6号结点; 3.从7号结点...原创 2018-10-26 17:30:37 · 971 阅读 · 0 评论 -
数据结构--合并两个有序链表,合并后依然有序
解题思路: 假设有两个有序单链表List1、List2 首先创建新的空链表,用于存放结果 如果两个有序单链表均为空,结果链表为空; 如果有一个有序单链表为空,则结果链表为另一个链表; 如果两个有序单链表均不为空,则根据以下方法进行合并 合并结束的条件:两个链表有一个为空 //合并两个有序链表,合并后依然有序 ListNode * MergeOrderedList(ListNode...原创 2018-11-17 14:40:24 · 2083 阅读 · 0 评论 -
[ 算法 ] -- 希尔排序,Java实现
希尔排序: 希尔排序又称为缩小增量法,是对直接插入排序算法的最坏情况的优化。 实现过程: 先将数据分成不同的组,对每一组进行排序,然后再对所有元素进行一次插入排序,减少数据交换和移动的次数。 在进行希尔排序时,要先知道数组的长度,根据长度确定步长大小。 当步长为1时,采用直接插入排序。 具体实现由下图所示: 时间复杂度: 希尔排序的时间复杂度与增量(步长len)的选取有关。 ...原创 2019-07-25 11:21:31 · 211 阅读 · 0 评论 -
[ 算法 ] -- 选择排序,Java实现
选择排序: 每次从待排序的数据元素中选出最小(或最大)的元素,存放在起始位置,直到全部待排序的数据全部排完。 实现思路1:每一趟排序,j = i + 1;当arr[j]<arr[i],交换,否则不交换 实现思路2:先选出待排序数据中的最小元素,再进行交换 时间复杂度:O(n^2) 空间复杂度:O(1) 选择排序是不稳定的排序 思路1代码实现: import java...原创 2019-07-25 18:12:10 · 205 阅读 · 0 评论 -
[ 算法 ] -- 堆排序,Java实现
堆的基本概念: 堆是一棵所有元素按完全二叉树的顺序存储方式存储的完全二叉树。 堆的性质: --堆中某个节点的值总不大于或不小于其父节点的值; --堆总是一棵完全二叉树。 小根堆:每个节点的值小于等于左、右孩子的值(根节点最小的堆) 大根堆:每个节点的值大于等于左、右孩子的值(根节点最大的堆) 父节点 n ==&g...原创 2019-08-23 23:38:38 · 333 阅读 · 0 评论
分享