
数据结构和算法
Ryam
Don't give up!
展开
-
java排序之 --- 选择排序
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键 快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-11-15 22:26:02 · 171 阅读 · 0 评论 -
最大连续子数组和
/** * 最大连续子数组和 * * @param arr * @return */ private static int maxSubArray(int[] arr) { //当前最大子数组和 int curSum = 0; //最终最大子数组和 int maxSu...原创 2018-03-07 23:39:03 · 268 阅读 · 0 评论 -
括号匹配
第一种: /** * 判断括号匹配是否正确 * * ab[c(sa)s]d: true * ab[c(sa])sd: false * * @param str * @return */ public static boolean check(String str) { //利用...原创 2018-02-02 21:31:59 · 321 阅读 · 0 评论 -
java排序算法之 -- 插入排序
插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。举个小例子: arr[] = {3,1,2,6,5,4} 第 1 趟排序: i = 1, value = 1, [ 1 1,3,2,6,5,4 第 2 趟排序: i = 2, value = 2, [ 2 1,2,3,6,5,4 第 3 趟排序:原创 2018-01-16 21:58:19 · 197 阅读 · 0 评论 -
循环数比较
对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,例如repeat(1234, 3) = 123412341234,repeat(20,2) = 2020. 牛牛现在给出4个整数x1, k1, x2, k2, 其中v1 = (x1, k1), v2 = (x2, k2),请你来比较v1和v2的大小。 输入描述: 输入包括一行,一行中有4个正整数x1, k1, x原创 2017-12-23 23:12:29 · 567 阅读 · 0 评论 -
java排序 -- 堆排序
堆 是具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆; 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序的基本思想是: 将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行原创 2017-12-23 21:33:24 · 164 阅读 · 0 评论 -
n个数里最小的k个
题目描述找出n个数里最小的k个输入描述每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n 不超过100。输出描述输出n个整数里最小的k个数。升序输出示例1输入 3 9 6 8 -10 7 -11 19 30 12 23 5 输出 -11 -10 3 6 7import java.util.Scanner;public class Main{ public static v原创 2017-12-23 21:22:10 · 434 阅读 · 0 评论 -
字符串中找出连续最长的数字串
字符串中找出连续最长的数字串原创 2017-12-23 19:44:14 · 360 阅读 · 0 评论 -
java排序之 --- 快速排序
快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。举个小例子如图片所示(摘自百度图片):每一次选取每部分的第一个元素作为关键数据 key,从每部分的最后一个元素开始找,找到第一个比 key 小的元素,再从头开始找,找到第一个不比原创 2017-11-25 22:51:58 · 260 阅读 · 0 评论 -
java排序之 --- 归并排序
说归并排序之前先说明一下分治的思想。何为分治?分治的思想就是将一个规模为 N 的问题分解为 K 个规模较小的子问题,这些子问题相互独立且与原问题性质相同,只要求出了这些子问题的解,就可得到原问题的解。 归并排序就是采用了这样的思想,本次要实现的是二路归并排序,就是将一组待排序的数组分成两个两个子数组,子数组又继续分为子子数组,直到每个数组中只有一个元素,然后每次将两个子数组合并成一个有序数组,直至原创 2017-11-15 22:33:16 · 331 阅读 · 0 评论 -
java排序之 --- 冒泡排序
冒泡排序是我们比较常用的一种排序算法,它的原理是:从头遍历未排好序的序列,每相邻的两个元素进行比较,较大(或较小)的元素放在后面,一轮遍历之后最大(或最小)的元素已经放到最后,然后依次重复之前的步骤把未排好序的序列进行排序,遍历 n-1 轮之后,整个序列就排好序了(第 n 轮不必要,因为第 n-1 轮排序后只剩下最后一个元素)。因为这种排序算法每次排好一个元素,就像冒泡一样,所以叫冒泡排序。举个小原创 2017-11-15 22:30:29 · 179 阅读 · 0 评论 -
数组循环右移 k 位
例: arr[] = 12345678; k = 21.逆序前 6(8-2) 位 -> 65432178 2.逆序后 2 位 -> 65432187 3.全部逆序 -> 78123456private static void reverseK(int[] arr,int k) { if(arr != null) { int ...原创 2018-02-20 00:01:20 · 607 阅读 · 0 评论