![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
篱落雨沫
这个作者很懒,什么都没留下…
展开
-
数据结构--链表的基本操作
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 · 192 阅读 · 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 · 814 阅读 · 0 评论 -
数据结构--合并两个有序链表,合并后依然有序
解题思路: 假设有两个有序单链表List1、List2首先创建新的空链表,用于存放结果如果两个有序单链表均为空,结果链表为空;如果有一个有序单链表为空,则结果链表为另一个链表;如果两个有序单链表均不为空,则根据以下方法进行合并合并结束的条件:两个链表有一个为空//合并两个有序链表,合并后依然有序ListNode * MergeOrderedList(ListNode...原创 2018-11-17 14:40:24 · 1974 阅读 · 0 评论 -
[ 算法 ] -- 希尔排序,Java实现
希尔排序:希尔排序又称为缩小增量法,是对直接插入排序算法的最坏情况的优化。实现过程:先将数据分成不同的组,对每一组进行排序,然后再对所有元素进行一次插入排序,减少数据交换和移动的次数。在进行希尔排序时,要先知道数组的长度,根据长度确定步长大小。当步长为1时,采用直接插入排序。具体实现由下图所示:时间复杂度:希尔排序的时间复杂度与增量(步长len)的选取有关。...原创 2019-07-25 11:21:31 · 127 阅读 · 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 · 151 阅读 · 0 评论 -
[ 算法 ] -- 堆排序,Java实现
堆的基本概念:堆是一棵所有元素按完全二叉树的顺序存储方式存储的完全二叉树。堆的性质: --堆中某个节点的值总不大于或不小于其父节点的值; --堆总是一棵完全二叉树。小根堆:每个节点的值小于等于左、右孩子的值(根节点最小的堆)大根堆:每个节点的值大于等于左、右孩子的值(根节点最大的堆)父节点 n ==&g...原创 2019-08-23 23:38:38 · 245 阅读 · 0 评论