数据结构与算法
数据结构与算法
时光·漫步zth
辛酸泪,影单醉。
展开
-
排序——选择类排序(简单选择排序、树形选择排序、堆排序)
1.选择排序原理在第 i 趟的记录序列中选取第 i 小的记录作为有序序列的第 i 个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。2. 简单选择排序给定数组:int[ ] arr={n1,n2,n3, ...}( 共 n 个数 );第1趟排序,在待排序数据arr[0]~arr[n-1]中选出最小的数据,将它与arrr[0]交换;第2趟,在待排序数据arr[1]~...原创 2018-12-14 17:23:59 · 615 阅读 · 0 评论 -
排序——归并类排序
归并类排序是首先将原始无序序列划分成两个子序列,然后分别对每个子序列递归地进行排序,最后再将有序子序列合并。归并排序是一种基于分治法的排序。归并排序是简单地进行“分”,重点却在“合”的过程,即对两个有序子序列进行归并的过程:每次比较子序列头,取出较小的进入结果序列;其后继续比较两个子序列头,取出较小的进入结果序列,重复上述过程,直到其中一个子序列为空,剩余子序列中的元素就可以直接进入结果序...原创 2019-07-21 10:57:24 · 309 阅读 · 0 评论 -
查找字符串中第一个只出现一次的字符
利用哈希表统计java 实现如下:package com.leetcode.string;/** * 在字符串中找出第一个只出现一次的字符 */public class FirstNotRepeatingChar { public static char getChar(String str){ if (str == null || str.length...原创 2019-07-20 10:42:38 · 387 阅读 · 0 评论 -
统计一个字符串中每个字符的个数
使用哈希表统计package com.leetcode.string;import java.util.HashMap;/** * 统计一个字符串中每个字符的个数 */public class CountCharsOfString { /** * 方法一 * @param str 待统计的字符串 */ public static H...原创 2019-07-20 10:37:27 · 1720 阅读 · 0 评论 -
螺旋矩阵
螺旋矩阵如图所示: 或java 实现代码:package com.leetcode.array;/** * @author zth * @Date 2019-07-17 21:50 * 螺旋矩阵 */public class Juzhen { public static int[][] fill(int N){ int index = ...原创 2019-07-18 10:46:05 · 224 阅读 · 0 评论 -
蛇形矩阵
蛇形矩阵如图说所示: 或 或 java 实现代码:package com.leetcode.array;/** * @author zth * @Date 2019-07-18 8:35 * 蛇形矩阵 */public class SnakeLikeMat { /** * 填充蛇形矩阵 * @param m 行数 ...原创 2019-07-18 10:40:12 · 326 阅读 · 0 评论 -
判断一个数是不是2的次方
1. 一直除 2,看最后是否等于1.public class method01 { public static void main(String[] args){ int i = 16; // 待判断的数 int count = 1; // 待判断的数是 2 的 count 次方 while (i>0){ ...原创 2019-04-09 01:21:04 · 387 阅读 · 0 评论 -
排序——插入类排序(直接插入排序、折半插入排序、希尔排序)
有序序列 r[1]~r[i-1] r[i] 无序序列 r[i+1]~r[ n]一趟插入排序的任务:在 r[1]~r[i-1] 有序序列区中查找 r[i] 的插入位置,保证 r[1...j] <= r[i] < r [j+1... i-1]。 将 r [j+1... i-1] 中所有的记录向后移一个位置。 将 r[i] 插入到 r[j+1]。插入排序分类:直接插...原创 2018-12-18 01:46:34 · 1655 阅读 · 0 评论 -
排序——交换类排序(冒泡排序、快速排序)
1. 交换类排序算法的基本思想:对待排序记录的关键字两两进行比较,只要发现两个记录为逆序就进行交换,直到没有逆序的记录为止。如果要将整个记录序列调整力递增序列,那么元素之间是递减关系即为逆序。冒泡排序和快速排序就是典型的交换类排序算法。 2. 冒泡排序冒泡排序也叫做相邻比逆法,即在扫描待排序元素序列时,顺次比较相邻两个元素的大小,如果逆序就交换位置。2.1 排序步骤...原创 2018-12-21 12:40:51 · 2496 阅读 · 0 评论 -
排序——堆排序
1. 堆堆是一棵顺序存储的完全二叉树。其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。对于 n 个元素的序列 {R0, R1, ... , Rn},当且仅当满足下列关系之一时,称之为堆:(1) Ri <= R2i+1 且 Ri <= R2i+2 (小根堆)(2) Ri &g...原创 2018-12-15 23:44:01 · 310 阅读 · 0 评论 -
模式匹配(朴素模式匹配、KMP模式匹配)
求一个字符串(模式串)在另一个字符串(主串)中的位置,称为字符串模式匹配1. 朴素模式匹配对主串 S 和模式串 T 分别设置指针 i 和 j ,假设字符串下标从 0 开始,初始时 i 和 j 分别指向每个串的第 0 个位置。在第 n 趟匹配开始时,i 指向主串 S 中的第 n-1 个位置,j 指向模式串T的第0个位置,然后逐个向后比较。若 T 中的每一个字符都与 S 中的字符相等,则称匹配...原创 2019-08-08 10:16:03 · 453 阅读 · 0 评论