数据结构和算法
ZHBlog_
不用担心,我头发还很多!!!
展开
-
数据结构---哈夫曼树的Java实现
1、节点类//节点类package com.hang.demo01;public class Node implements Comparable<Node>{ int value; Node left; Node right; public Node(int value) { this.value = value; } @Override public int compareTo(Node node) {原创 2020-09-07 11:02:50 · 166 阅读 · 0 评论 -
数据结构和算法——堆排序
堆排序 堆排序(HeapSort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序的步骤:1、将初始待排序的元素序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区;2、将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,……Rn-1)和新的有序区(...原创 2019-11-22 23:04:22 · 183 阅读 · 0 评论 -
数据结构和算法——树结构(二叉树的创建、查找、遍历和删除)
(1)二叉树 二叉树的任意一个节点的子节点不超过两个。(2)满二叉树 所有的叶子节点都在最后一层,而且节点的总数为2^-1,n是树的高度。(3)完全二叉树 完全二叉树的所有叶子节点都在最后一层或者倒数第二层,并且倒数第二层的叶子节点从右向左连续,最后一层的叶子节点从左向右连续。(4)二叉树的链式存储结构(5)二叉树的代码实现(创建、添加节点、遍历节点、删除节点) ...原创 2019-11-15 23:54:03 · 379 阅读 · 0 评论 -
数据结构和算法——八种常用的排序算法------基数排序的优化(队列实现)
基数排序的优化,使用队列实现 参考基数排序的数组实现算法,使用队列实现显得比数组更简洁,快捷。代码实现://自定义的队列public class MyQueue { private int maxSize; // 表示数组的最大容量 private int front; // 队头 private int rear; // 队尾 private int[...原创 2019-11-15 09:05:32 · 231 阅读 · 0 评论 -
数据结构和算法——八种常用的排序算法------基数排序
基数排序 基数排序就是先按照低位排序,然后收集排序后的结果,然后在按照高位排序,再收集排序结果,以此类推,直到最高位。排序的过程演示:代码演示:import java.util.Arrays;public class RadixSort { public static void main(String[] args) { int[] arr = new...原创 2019-11-07 23:28:56 · 134 阅读 · 0 评论 -
数据结构和算法——八种常用的排序算法------归并排序
归并排序 归并排序是建立在归并操作上的一种排序算法;它是将一个序列分成子序列,再对子序列进行归并排序,最后将子序列合并得到一个有序的序列。 算法步骤: ● 把长度为n的序列分为两个长度为n/2的子序列; ● 对两个子序列分别进行归并排序; ● 合并子序列成一个有序序列。代码实现:package org.westos.mergesort;import...原创 2019-11-07 14:05:10 · 149 阅读 · 0 评论 -
数据结构和算法——八种常用的排序算法----选择排序
1. 选择排序 选择排序是一种直观的排序算法,它的工作原理是:首先在未排序的序列中找到最小的元素,将它放在序列的起始位置,然后在剩下的未排序序列中来依次寻找最小元素,将它放在排好序的序列后面。一直到所有的元素排序完成,循环结束。代码实现:package org.westos.selectsort;import java.util.Arrays;public class Selec...原创 2019-11-04 11:56:43 · 109 阅读 · 0 评论 -
数据结构和算法——八种常用的排序算法----直接插入排序和希尔排序
1. 直接插入排序 直接插入排序是通过构建有序序列,对于未排序的序列,将其中的元素在已排序的序列中从后往前扫描,找到相应的位置,将其插入即可。 算法实现步骤: ● 从第一个元素 AEwaese6x457r65f67...原创 2019-10-31 21:17:19 · 182 阅读 · 0 评论 -
数据结构和算法——八种常用的排序算法----交换排序(冒泡排序和快速排序)
1. 冒泡排序 冒泡排序是一种简单的排序算法,它重复的走访要排序的数列,一次比较两个元素,如果顺序错误就把它们进行交换。 ● a 比较相邻的两个元素,如果前面的大于后面的,就交换它们的位置; ● b 对每一对相邻元素作相同的工作,从第一对到最后一对,这样进行完后最后的元素应该是最大的数; ● c 针对除了最后一个元素外的所有元素重复上面的步骤; ● d 重复a-c,直到...原创 2019-10-25 22:36:26 · 888 阅读 · 0 评论 -
数据结构和算法——线性结构(3)递归和斐波那契数列、汉诺塔问题
1. 递归 递归总的来说就是在一个方法内部再次调用此方法的编程方式。下面用一段代码实现:public class Recursive { public static void main(String[] args) { print(10); } public static void print(int n){ if (n > 0...原创 2019-10-23 21:42:02 · 255 阅读 · 0 评论 -
数据结构和算法——线性结构(2)循环链表和双向循环链表
1. 循环链表 循环链表和单链表最大的不同就是循环链表没有最后一个节点,循环链表的最后一个节点的下一个节点就是头节点。 循环链表的结构:代码实现:public class LoopNode { int data; LoopNode next = this; public LoopNode(int data){ this.data = data...原创 2019-10-22 22:19:02 · 473 阅读 · 1 评论 -
数据结构和算法——线性结构(1)数组、栈、队列和单链表
1. 数组 ● 面向对象: add 、insert 、get 、delete ● 查找算法:线性查找 (依次对比查找,效率低)、二分查找(前提是有序数组)二分查找思路:import java.util.Scanner;public class BinarySearch { public static void main(String[] args) { //...原创 2019-10-17 23:19:06 · 196 阅读 · 0 评论 -
数据结构和算法——中序线索化二叉树
1、中序线索化二叉树 创建如上的二叉树,线索化二叉树时,根据指定的遍历方式得到的节点的访问顺序,一个节点前面的节点,叫做前驱节点,一个节点后面的节点,叫做后继节点。 线索化二叉树的规则: 按照某一遍历规则。记录当前节点(cur),上次访问的节点(pre)。 ① 如果当前节点的左孩子为空 (cur.leftNode == null),就让当前节点的左指针指向它的前驱节点 ,并把当...原创 2019-12-06 12:20:38 · 1641 阅读 · 0 评论