算法与数据结构
肖大仙~
从头开始学习的计算机小白!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序(两种实现思路)
相信有了最大堆的实现基础,我们就可以开始考虑利用最大堆的特性,实现排序的功能。 1、第一种思路:需要开辟新的空间。 我们堆传入的数组,首先需要整理成最大堆的形式。我们循环遍历每个数组的元素,然后利用堆的add方法,最终把一个数组实现成最大堆的形式。然后我们开始循环遍历最大堆,每次都使用最大堆的取出最大元素的方法,不断的放入传入的数组里。循环结束后,我们的数组则是按照从大到小的顺序。最后再倒序一下数组,就完成了堆排序。 2、第二种思路:不需要开辟额外的空间,进行原地的排序。 这种方法我们称为Heapify。原创 2021-06-12 17:30:02 · 683 阅读 · 0 评论 -
最大堆(二叉堆)
1、堆也是一种数据结构,使用二叉堆去实现 2、二叉堆是完全二叉树,类似于下图,必须要满足从根到每一层都顺序堆放,如果某一层放满了,则继续从下一层从左往右的顺序继续执行。 3、最大堆的定义:堆中某个节点的值总是不大于父亲节点的值。 4、实现最大的堆的结构,其实在内部我们可以采用数组的形式去实现,因为根据索引,每个节点(如果索引是i)的父亲节点是 (i-1)/2, 则左孩子的节点索引是i2+1, 右孩子节点的索引是 i2+2 ,这样我们就可以任意的根据某个索引的位置,寻找其父亲的节点,以及左右子树的节点。原创 2021-06-12 17:12:47 · 1192 阅读 · 0 评论 -
集合和映射
集合和映射就是我们所熟知的Set和Map类的集合 Set集合是一个不能包含重复元素的集合 Map集合是一个包含键值对的集合,其中键是不能重复的 Set和Map都能用二分搜索树和链表的数据结构来实现。 其中增删改查的时间复杂度,对于链表来说是O(n)级别的,而对于二分搜索树的实现平均而言,是O(logn)级别的。而最坏的情况是二分搜索树退化成一条链表的形式。 对于Map集合利用二分搜索树和链表来进行实现,我们定义其中的节点分别可以是: class Node{ K key; V value; Node l原创 2021-06-11 00:03:53 · 281 阅读 · 4 评论 -
二分搜索树的实现
1、树 树是一种天然的组织结构 2、二叉树 每个节点最多只有两个分支 每个节点最多只有一个父亲节点 和链表一样具有动态的特点 每个节点的定义: public class Node{ private E e; private Node left; private Node right; } 具有一个节点值以及左右两个子树的节点指向。 3、二分搜索树 具有一定的顺序性,前提是每个节点值都是可比较的。 每个节点的左子树的值都小于该节点 每个节点的右子树的值都大于该节点 假设我们的节点值都是不重复原创 2021-06-10 17:03:37 · 373 阅读 · 1 评论 -
希尔排序和归并排序
希尔排序 /** * @author:Xiao Chenglong * @Date:2021/5/17 希尔排序 * 就是插入排序的改良版,减少计算时间 **/ public class ShellSort { public static void sort(int[] arr) { int gap= arr.length/2; int current; while (gap > 0) { for (int原创 2021-05-18 19:35:39 · 167 阅读 · 0 评论 -
链表的实现(LinkedList)
List 接口 // 将ArrayList 和 LinkedList 的共性方法定义一个接口,保证体系的完整性 public interface List<E>{ // 三个基本方法 int size(); boolean isEmpty(); // 增 void add(E element); void add(int index,E element); // 删 E remove(int index); // 改原创 2021-05-14 11:19:52 · 164 阅读 · 2 评论 -
冒泡,选择,插入,快速排序算法
冒泡排序算法 public class BubbleSort { public static void bubbleSort(int[] arr){ // 第一轮循环 n-1次 for (int i = 0; i < arr.length-1; i++) { // 第二轮循环 n-1-i for (int j = 0; j < arr.length-i-1; j++) {原创 2021-05-11 21:15:46 · 164 阅读 · 0 评论
分享