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