该文被密码保护。 阅读全文
摘要:
栈(Stack)和队列 栈是一个后进先出的线性表,它要求只在表尾进行删除和插入操作。 所谓的栈,其实就是一个特殊的线性表。表尾称为栈顶(Top),相应的表头称为栈底(Bottom)。 栈的插入(Push),栈的删除(Pop).最开始栈中不包含任何数据,称为空栈,此时栈顶就是栈底,然后数据从栈顶进入, 阅读全文
摘要:
字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。 注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了(详看笔记部分解析)。如果需要对字符串做很多修改,那么应该选择使用 String 阅读全文
摘要:
1.使用队列模拟循环链表 import java.util.*; public class Solution { public int LastRemaining_Solution(int n, int m) { List<Integer> list=new ArrayList <>(); for( 阅读全文
摘要:
1、快速排序(最好的内排序) 1)在待排序的元素任取一个元素作为基准(通常选第一个元素,但最好的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素;2)将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边;3)对左右两个分区重复以上步骤直到所有元素都是有序的。 #i 阅读全文
摘要:
1、归并排序(Merge sort) 是创建在归并操作上的一种有效的排序算法,时间复杂度为 O(n log n) 。1945年由约翰·冯·诺伊曼首次提出。该算法是采用 分治法(Divide and Conquer) 的一个非常典型的应用,且各层分治递归可以同时进行。 将已有序的子序列合并,得到完全有 阅读全文
摘要:
1、堆排序 是指利用 二叉堆 这种数据结构所设计的一种排序算法。堆是一个近似 完全二叉树 的结构,并同时满足 堆积的性质 :即子节点的键值或索引总是小于(或者大于)它的父节点。 完全二叉树的重要性质: 二叉堆分以下两个类型: 1.最大堆:最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。[10 阅读全文
摘要:
1、希尔排序 也称 递减增量排序算法,是 插入排序 的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到 线性排序 的效率; 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一 阅读全文
摘要:
1、插入排序 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 我们预留了一个哨兵,这里我们将用到它来保存一个临时值。插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。当然,刚开始这个有序的小序列只有1个元素,就是第一个元素。比较是从有序序列 阅读全文