自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 数据结构与算法实战(十一)希尔排序法

数据结构与算法实战(十一)希尔排序法 基本思想:让数组越来越有序 不能只处理相邻的逆序对 实现 public class ShellSort { private ShellSort(){} public static <E extends Comparable<E>> void sort(E[] data){ int h = data.length / 2; while (h >= 1){ //s

2020-11-28 10:13:57 168

原创 数据结构与算法实战(十)冒泡排序

数据结构与算法实战(十)冒泡排序 原理 比较两个相邻的元素,将值大的元素交换到右边 思路 依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 (1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。 (2)比较第2和第3个数,将小数 放在前面,大数放在后面。 … (3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成 (4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一个数是不参加比较的。 (

2020-11-23 09:32:35 177

原创 数据结构与算法实战(九)堆与优先队列

数据结构与算法实战(九)堆与优先队列 一、堆 堆的基本结构 使用二叉树来表示一个堆,也叫做二叉堆 二叉堆是一棵完全二叉树(若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树。) 堆中某个节点的值总是不大于其父节点的值,这样的堆叫做最大堆(根节点最大),相应的可以定义最小堆 用数组存储二叉堆 索引从1开始 如果索引从0开始: 代码实现基础架构 //数组实现二叉堆 public class Ma

2020-11-18 10:21:55 130

原创 数据结构与算法实战(八)二分搜索树

数据结构与算法实战(八)二分搜索树 一、树结构 树结构本身是一种天然的组织结构(例如电脑中的文件夹结构) 高效(将数据使用树结构存储后,出奇的高效) 二分搜索树 平衡二叉树:AVL;红黑树 堆 ; 并查集 线段树;Trie(字典树,前缀树) 二、二分搜索树 (一)二叉树 和链表一样,是动态数据结构 class Node{ E e; Node left; //左孩子 Node right; //右孩子 } 二叉树具有唯一根节点 二叉树每个节点最多有两个孩子 二叉树每个节点最

2020-11-16 12:21:58 143

原创 数据结构与算法实战(七)二分查找法

数据结构与算法实战(七)二分查找法 一、二分查找法介绍 对于有序数列,才能使用二分查找法 二分查找法是O(logn)级别的算法 而排序叫做二分查找法的前置条件,如果计算排序时间:O(n logn) 应用 在多次查找中使用 二、递归实现二分查找法 public class BinarySearch { private BinarySearch(){} /** * * @param data 数组 * @param target 目标元素 * @par

2020-11-11 12:05:29 552

原创 数据结构与算法实战(六)快速排序法

数据结构与算法实战(六)快速排序法 一、原理 QuickStart(arr, l, r){ if(l >= r) return; int p = partition(arr, l, r); //对arr[l, p - 1]进行排序 QuickStart(arr, l, p-1); //对arr[p + 1, r]进行排序 QuickStart(arr, p + 1, r); } 二、基础的Partition实现 pr

2020-11-10 15:46:09 817

原创 数据结构与算法实战(五)归并排序法

数据结构与算法实战(五)归并排序法 一、原理 MergeSort(arr, l, r){ if(l >= r) return; //求解最基本问题 int mid = (l + r) / 2; //将原问题转化为更小的问题 //对arr[l , mid]进行排序 MergeSort(arr , l, mid); //对arr[mid + 1 , r]进行排序 MergeSort(arr , mid + 1, r); //将a

2020-11-07 19:07:51 154

原创 数据结构与算法实战(四)动态数据结构基础:链表

数据结构与算法实战(四)动态数据结构基础:链表 链表是真正的动态数据结构 一、什么是链表 链表结构 数据存储在节点(Node)中 class Node{ E e; Node next;//指向下一个结点(最后一个结点为null) } 优点:真正的动态,不需要处理固定容量问题 缺点:丧失了随机访问的能力 数组和链表的对比 数组 最好用于索引有语意的情况下。 最大的优点:支持快速查询 链表 不适合用于索引有语意的情况。 最大的优点:动态 二、实现链表 1、实现内部Node 采用内部

2020-11-04 20:56:33 220

原创 数据结构与算法实战(三)基础数据结构

数据结构与算法实战(三)基础数据结构 一、数组 数组最大优点:快速查询 1、二次封装属于我们的数组类 public class Array { private int[] data; private int size; //构造函数,传入数组的容量capacity构造Array public Array(int capacity){ data = new int[capacity]; size = 0; }

2020-11-03 18:49:27 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除