
算法
文章平均质量分 88
Alpha峰
这个作者很懒,什么都没留下…
展开
-
面试题:25匹马最快3匹及扩展
描述: 在25匹马里,只有五条赛道,在没有计时工具的情况下,选最快的三批. (只能得出相对快慢)两个扩展: 最快5匹呢, 有30匹马呢1. 基本思路(找最快3匹马)先确定第一名(用6场):分为5组(A,B,C,D,E),分别跑一次, 知道每组的排名 (A1,A2,A3,A4,A5),(B1,B2,B3,B4,B5)... 每组留下前三名,因为只要前三名,剩下的马不可能., 每组第一名(A1,B1,C1,D1,E1)跑一次, 只留下前三组. 剩下组第一名都最多第四....原创 2022-04-29 07:43:59 · 1299 阅读 · 0 评论 -
java实现快速排序和随机快速排序
[-]快速排序快速排序的随机化版本性能分析随机序列10w100w1000w有序序列10w1w1000w排序算法是算法学习的第一步,想当初我学的第一个算法就是选择排序,不过当时很长一段时间我都不清楚我到底用的是选择还是冒泡还是插入。只记得两个for一个if排序就完成了。再后来更系统地接触算法,才发现那才是排序算法队伍中小小而基本的一员。买的《算法导转载 2016-05-12 16:31:56 · 4544 阅读 · 0 评论 -
java代码快速排序
1.最简洁版(源自算法导论) /** * @param a 数组数据 * @param l 左边界 * @param r 右边界 */ public void quickSort(int[] a, int l, int r) { if (l >= r) return;//过滤边界 int...原创 2016-05-12 17:05:07 · 578 阅读 · 0 评论 -
插入排序(转)
插入排序一、基本思想通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。如果输入数组已经是排好转载 2016-10-19 15:50:44 · 191 阅读 · 0 评论 -
顺时针数组循环打印
昨天做唱吧的笔试题,有个叫循环打印的题目。感觉听有意思,当时没思路,果然还是平时积累太少。今天特来补上:题目描述:已知有二维数组如下:1 2 3 45 6 7 89 10 11 1213 14 15 16要求按照 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10的顺序打印出来package changba;原创 2017-09-23 11:41:18 · 427 阅读 · 0 评论 -
京东2018在线笔试题 第一个编程大题
import java.util.*;/** * 京东笔试题: 2.如果"X"和“Y”是合法的库列那么“XY”也是一合法的括号库列 3.如果"X"合法的库列那么"(X)"也合法的括号库列 4. 每个合法的括号序列都可以甶上面的规则生成. 例如 "","()","()()()"都是合法的。现在有个合法的括号序列s,一次移除操作为两步: 1. 移除库列s中的第一个左括号原创 2017-09-09 15:57:02 · 1385 阅读 · 2 评论 -
单例模式的8种写法及其分析 (推荐:double check,内部类,枚举的单例写法)
单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式。但是除了这两种方式,本文还会介绍其他几种实现单例的方式,让我们来一起看看吧。 简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某...转载 2018-08-23 14:31:00 · 906 阅读 · 1 评论 -
java 堆排序 最简洁实现版
堆排序整体思路: 1. 初始化最大堆 2. push堆顶元素倒最后,并将堆长度减一,直到堆长度为0首先几个关于堆的知识: 1. 堆就是完全二叉树, 最大堆的特性: 任意的父节点总比其两个子节点大. 2. 堆排序原理:先将数组整理成一个最大堆. (最大堆就是升序排列,最小堆就是降序排列,) 开始push堆顶元素,将最后一个元素放入堆顶,并重新向下整理堆,直到堆长度为...原创 2019-07-29 14:05:12 · 500 阅读 · 0 评论 -
八皇后问题 java实现
1.问题描述在国际象棋中,皇后可以横,竖,斜三种走法. (比中国象棋的車还厉害些)现有n*n的棋盘 要放n个皇后,且使他们相互无法攻击,问有多少种放法.(即棋盘上任意横,竖斜线都只有一个皇后)2.大概思路:1.用n*n一维数组表示结果:0代表未放子,1表示放子. 根据下标自己逻辑解析为n*n二维2.判断一行的每个格子是否可以落子,如果可以则落子后递归到下一行继续判断.直到第n+1...原创 2019-08-05 16:29:43 · 255 阅读 · 0 评论