随笔 - 1162
文章 - 0
评论 - 16
阅读 -
59万
随笔分类 - 算法与数据结构
转换成十六进制
摘要:一、自动实现 Java 中的 Integer 包装类给我们提供了丰富的 API,通过查阅文档,可以通过下面几个方法进行进制的转换: String str1 = Integer.toBinaryString(60); //转换成 二进制的 字符串 String str2 = Integer.toHex
阅读全文
排序算法——希尔排序
摘要:一、简单插入排序问题 简单插入排序存在的问题 我们看简单的插入排序可能存在的问题. 数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是: {2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,
阅读全文
排序算法——插入排序
摘要:一、插入排序介绍 1、介绍 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 2、插入排序思想 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-
阅读全文
排序算法——选择排序
摘要:一、选择排序介绍 1、基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 2、选择排序思想 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是: 第一次从arr[0]~arr[n-1]中选取最小值,与ar
阅读全文
交换两个变量的值
摘要:1、方案一 1 public static void main(String[] args) { 2 int x = 1; 3 int y = 2; 4 5 /* 6 通用的方案:适用于任意的数据类型借助于第三个通样类型的临时变量 7 */ 8 int temp = x;//x变量中值就赋值给了te
阅读全文
排序算法——冒泡排序
摘要:一、基本介绍 冒泡排序(Bubble Sorting)的基本思想是: 通过对待排序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底的气泡一样逐渐向上冒。 二、演示冒泡过程的例子(图解) 总结图解过程: (1)一共进行 数组的大小-1
阅读全文
算法的时间复杂度与空间复杂度
摘要:一、算法的时间复杂度 1、度量一个程序(算法)执行时间的两种方法 (1)事后统计的方法 这种方法可行,但是有两个问题:一是要想设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素,这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快
阅读全文
排序算法
摘要:一、排序算法的介绍 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 二、排序算法的分类 1、内部排序 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。 2、外部排序法 数据量过大,无法全部加载到内存中,需要借助外部存储器(文件等)进行排序
阅读全文
递归—八皇后问题
摘要:八皇后问题 说明: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或统一斜线上,问有多少中摆法(92)。 思路分析: (1)第一个皇后先放第
阅读全文
递归—迷宫问题
摘要:迷宫问题 说明: (1)小球得到的路径,和程序员设置的找路策略有关系:找路的上下左右的顺序有关 (2)再得到小球路径时,可以先试用(下右上左),可以先使用(下右上左),再改成(上右下左),看看路径是否有变化 (3)测试回溯现象 (4)思考:如何求出最短路径? 代码分析: 1 package com.
阅读全文
递归
摘要:一、递归 1、递归应用场景 递归的实际应用场景,迷宫问题(回溯),递归(Recursion) 2、递归的概念 简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时,可以让代码更加简洁。 3、递归调用机制 递归调用机制,常见应用: (1)打印问题 1 pu
阅读全文
逆波兰计算器完整版
摘要:逆波兰计算器完整版 完整版的逆波兰计算器,功能包括: (1)支持+,-,*,/,() (2)支持多位数,支持小数 (3)兼容处理,过滤任何空白字符,包括空格、制表符,换页符 代码实现:
阅读全文
中缀表达式转换为后缀表达式
摘要:中缀表达式转换成后缀表达式 1、概述 可以看到,后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长得情况下,因此在开发中,需要将 中缀表达式转成后缀表达式。 2、具体步骤 3、案例 将中缀表达式 "1+((2+3)*4)-5" 转换为后缀表达式的过程如下: 结果为:"1 2 3
阅读全文
前缀、中缀、后缀表达式
摘要:前缀表达式(波兰表达式) 1、概念 前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前。 2、案例 3、前缀表达式的计算机求值 从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程指导表达式最
阅读全文
栈实现逆波兰计算器(后缀表达式)
摘要:逆波兰计算器 设计一个逆波兰计算器,可以完成如下任务: (1)输入一个逆波兰表达式(后缀表达式),使用栈(stack),计算其结果。 (2)支持小括号和多位数整数。 (3)思路分析 从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素
阅读全文
栈实现综合计算器(中缀表达式)
摘要:实现综合计算器(中缀表达式) 1、使用栈来实现综合计算器 2、思路分析(示意图) 3、代码实现
阅读全文
栈 Stack
摘要:一、栈的介绍 1、栈的特点 (1)栈是先入后出(FILO-First In Last Out)的有序列表。 (2)栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。 允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Botto
阅读全文
数据结构与算法【目录】
摘要:一、数据结构和算法 1、数据结构和算法概述 二、稀疏数组和队列 1、稀疏数组 2、队列 (1)数组模拟队列 (2)数组模拟环形队列 三、链表 1、链表介绍 2、单链表 3、单链表案例 4、双向链表 5、单向环形链表 — 约瑟夫问题 四、栈 1、栈的介绍 2、用数组模拟栈 3、前缀、中缀与后缀表达式
阅读全文
单向环形链表 —— 约瑟夫环问题
摘要:一、单向环形链表介绍 二、单向环形链表应用场景 Josephu(约瑟夫、约瑟夫环) 问题 问题描述:设编号为 1,2,...n 的 n 个人围坐一圈,约定编号为 k (1<=k<=n)的人从1开始报数,数到 m 的那个人出列,它的下一位又从1开始报数,数到 m 的那个人又出列,一次类推,直到所有人出
阅读全文