算法 - 第二章 数据结构 题目一 用数组实现大小固定的队列和栈(一面题) 数组实现大小固定栈 /*** * size是对头索引(initSize是固定大小) 也是当前栈大小 * size=下个进队index * size-1=下个出队index * size==initSize时队满 判满 * size==0时队空 判空 ***/ public static class ArrayStack { private Integer[] arr; private Integer size; / pu…
算法 - 第一章 时间复杂度: Big O 时间/空间复杂度计算一样,都是跟输入数据源的大小有关 n->∞ O(logn) 每次只使用数据源的一半,logn同理 最优解 先满足时间复杂度的情况最优情况下使用最小空间复杂度 例题:子序列交换 题目描述: 输入一个序列,如1234567,在5和6位置处分成两个子序列,12345与67,将两个序列交换输出,如该输出为6712345. 思路讲解: 首先将两个子序列逆序合并 逆序:左右两指针交换元素值直至中间 逆序空间复杂度:O(1) 再将生成的新序列逆序…
12 哈希表相关类--Live555源码阅读(一)基本组件类 这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 哈希表相关类综述 哈希表相关类一个有两个,HashTable和BasicHashTable.HashTable是BasicHashTable的派生类.…
第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么用数组 需求:保存所在城市每个月的平均温度,可以这么实现 var averageTemp1 = 43.3; var averageTemp2 = 53.2; var averageTemp3 = 14.2; var averageTemp4 = 42.8; var averageTemp5 = 14…
▶ 书中第二章部分程序,加上自己补充的代码,包括利用优先队列进行多路归并和堆排序 ● 利用优先队列进行多路归并 package package01; import edu.princeton.cs.algs4.IndexMinPQ; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; public class class01 { private class01() {} private static vo…
▶ 书中第二章部分程序,加上自己补充的代码,包括优先队列和索引优先队列 ● 优先队列 package package01; import java.util.Comparator; import java.util.Iterator; import java.util.NoSuchElementException; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class cla…
▶ 书中第二章部分程序,加上自己补充的代码,包括各种优化的快排 package package01; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.StdRandom; public class class01 { private class01() {} public static void sort1(Comparable[] a) /…
▶ 书中第二章部分程序,加上自己补充的代码,包括若干种归并排序,以及利用归并排序计算数组逆序数 ● 归并排序 package package01; import java.util.Comparator; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class class01 { private class01() {} private static void merge(Co…
▶ 书中第二章部分程序,加上自己补充的代码,包括插入排序,选择排序,Shell 排序 ● 插入排序 package package01; import java.util.Comparator; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class class01 { private class01() { } public static void sort(Comparab…
再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个阶段再去探究具体的实现,以及对基本结构的改造! C++标准库中的基本使用方法: 栈: #include<stack> 定义栈,以如下形式实现: stack<Type> s; 其中Type为数据类型(如 int,float,char等) 常用操作有: s.push(item);    /…