摘要:1 package cn.sun.it.review; 2 3 import java.util.Arrays; 4 5 public class RadixSort { 6 7 public static void main(String[] args) { 8 int[] arr = {278,
阅读全文
随笔分类 - 算法
自己学习算法的总结+思路+代码
各大公司的算法面试题
摘要:1 package cn.sun.it.review; 2 3 import java.util.Arrays; 4 5 public class RadixSort { 6 7 public static void main(String[] args) { 8 int[] arr = {278,
阅读全文
摘要:1 package cn.sun.it.review; 2 3 import java.util.Arrays; 4 5 public class MergeSort { 6 7 public static void main(String[] args) { 8 int[] arr = {49,3
阅读全文
摘要:1. 直接插入排序算法适用于基本有序的排序表和数据量不大的排序表。希尔排序有称之为缩小增量排序。 2. 下面这个视频分析的很详细 https://www.bilibili.com/video/BV14r4y1F71a?p=66 3. 希尔排序代码 1 package cn.sun.it.review
阅读全文
摘要:1. 折半插入排序是对直接插入排序算法的改进,在直接插入排序算法中,不难看出每趟插入的过程中,都进行了两项工作:(1)从前面的有序子表中查找出待插入元素应该被插入的位置;(2)给插入位置腾出空间,将待插入元素复制到表中的插入位置。注意到该算法中,总是边比较边移动元素,下面将比较和移动操作分离出来,即
阅读全文
摘要:1. 插入排序思想 (1.1)插入排序是一种简单直观的排序方法,其基本思想在于每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成。由插入排序的思想可以引申出三个重要的排序算法:直接插入排序、折半插入排序和希尔排序。 2. 直接插入排序思想及演示过程 https
阅读全文
摘要:1.这篇文章讲的很好: https://www.cnblogs.com/chengxiao/p/6129630.html# 2.下面这两个视频讲的也很清晰: https://www.acfun.cn/v/ac17519479 https://www.acfun.cn/v/ac17519437 3.
阅读全文
摘要:本篇随笔介绍了选择排序的思想,简单选择排序的思想,简单选择排序的Java代码实现以及测试结果;并从空间复杂度、时间复杂度和稳定性三个方面分析了简单选择排序算法的性能。
阅读全文
摘要:1. 快速排序是交换排序的一种,也是对冒泡排序的一种改进,其基本思想是基于分治法的; 2. 快速排序算法的思想是:在待排序表L[1...n]中任取一个元素pivot作为基准,通过一趟排序将待排序表划分为独立的两部分L[1...k-1], L[k+1...n], 使得L[1...k-1]中所有元素小于
阅读全文
摘要:题目如下: 1 /** 2 * @author sunhongguang 3 * @create 2020-04-17-12:10 4 */ 5 public class Test4 { 6 public static void main(String[] args) { 7 int n = 45;
阅读全文
摘要:题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 代码如下 1 public class Demo7 { 2 3 public static void main(String[] args) { 4 int fibonacci = Fibo
阅读全文
摘要:题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 代码如下 1 public class Demo6 { 2 3 public static void main(String[] ar
阅读全文
摘要:题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:该二维数组中的某一个数,小于它的数一定在它的左边,大于它的数一定在它的下面。所以可以从右上角开
阅读全文
摘要:题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 代码如下 1 public class Demo4 { 2 3 public static void main(String[] args) { 4 // 先创建多个节点,供测试使用 5 ListNo
阅读全文
摘要:题目:输入一个链表,反转链表后,输出新链表的表头。 代码如下 1 public class Demo3 { 2 3 public static void main(String[] args) { 4 // 先创建多个节点,供测试使用 5 ListNode listNode1 = new ListN
阅读全文
摘要:题目:输入一个链表,输出该链表中倒数第k个结点 代码如下 1 public class Demo2 { 2 public static void main(String[] args) { 3 // 先创建多个节点,供测试使用 4 ListNode listNode1 = new ListNode(
阅读全文
摘要:题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 核心代码如下 1 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { 2 ArrayList<Integer> list = new Arr
阅读全文
摘要:/** * 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000), * 对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。 * 请你协
阅读全文
摘要:/** * 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶, * 她最多可以换多少瓶汽水喝?”答案是5瓶, * 方法如下: * 先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。 * 然后你让老板先借给你
阅读全文
|