普林斯顿算法
文章平均质量分 79
i_chase
这个作者很懒,什么都没留下…
展开
-
单向链表的各种操作(java语言)
package algorithms;public class LinkedNode<Item> { Node first;//链表的头结点 private static class Node<Item>{ Item item; Node next=null; Node (Item item){ this.item = item; }...原创 2018-06-21 17:14:58 · 133 阅读 · 0 评论 -
规定入栈顺序,判断出栈顺序是否合理的问题
入栈顺序为0,1,2,3,4,5,6,7,8,9 入栈出栈操作可以随意交替进行,判断出栈顺序是否合理(之前看浙大的数据结构mooc的时候遇到了这个问题,当时只看了一章就半途而废了。这次重新看java的数据结构入门书,遇到了这个习题,自己用java实现了一下,测试结果正确)---------------------------------------------------------------...原创 2018-06-14 16:06:50 · 2031 阅读 · 0 评论 -
补全左括号
public static void main(String[] args) { //双栈法操作 Stack<String> vals = new Stack<String>(); //操作数栈 Stack<String> ops = new Stack<String>(); //运算符栈 while(!StdIn.isE...原创 2018-06-14 20:25:48 · 543 阅读 · 0 评论 -
算法的时间复杂度
常数和对数复杂度是最好的,线性或者线性对数是可以的平方,立方,甚至指数增长对于大规模问题是无法接受的原创 2018-06-16 16:36:25 · 97 阅读 · 0 评论 -
有序打印两个有序整型数组中的公共元素,程序在最坏情况下所需的运行时间与N成正比
public static void main(String[] args) { //a,b本来就是有序的 In库是算法书网站上提供的,In.readInts()方法用于从文件中读取出整型数组 //args[0],args[1]是文件名 int[] a = In.readInts(args[0]); int[] b = In.readInts(args[1]); ...原创 2018-06-18 18:06:04 · 350 阅读 · 0 评论 -
返回第一次或最后一次出现的索引位置的二分查找
算法最重要的是思路一年过去了,于2019/09/12再次更新代码-----------------------------------------------------------------------------------------------------------------------当元素多次出现在数组中时,基本的二分查找只能返回元素出现的随机位置,代码如下 /...原创 2018-06-19 10:20:20 · 801 阅读 · 1 评论 -
基于切分的选择算法
选择数组中第k小或第k大的元素,以下算法能保证线性性能public static Comparable select(Comparable[] a,int k) { StdRandom.shuffle(a);//避免快速排序的最快情况 int low = 0,high=a.length-1; while(low<=high) { int j = partition(a,lo...原创 2018-07-05 19:20:01 · 344 阅读 · 0 评论 -
统计数组中的重复/不重复元素个数
首先给出暴力方法,平方性能 public static int count(Comparable[] a) { //统计重复元素数,如果元素后面没有和它一样的那么它就是不重复元素,否则不是 int count = 0; for(int i = 0;i<a.length;i++) {//判断0到N-1这些元素是不是重复的 for(int j = i+1;j<...原创 2018-08-31 10:47:53 · 8831 阅读 · 1 评论