摘要:
博客内容来源于 刘欣老师的课程,刘欣老师的公众号 码农翻身 博客内容来源于 Java虚拟机规范(JavaSE7) 博客内容的源码 https://gitee.com/zumengjie/litejvm 阅读此博客请配合源码食用。 ClassLoader Class MethodAreaExecuto 阅读全文
摘要:
用到的VO package com.datang.api.vo; import java.util.List; /** * @author 顶风少年 * @date 2022/6/4 */ public class Organization { public Organization() { } p 阅读全文
摘要:
基数算法的思路是数组中的元素无论是几位数,但是每一位都不可能超过0-9的范围,所以通过循环判断每一位属于0-9的哪一个.将其放入对应的栈中,一次循环下来,确定了个位数的排序.如果是两个元素在同一个栈中那取出的顺序是先进先出.第二次循环确定十位的位置 第三次是百位以此类推.这里需要注意的是最大的循环次 阅读全文
摘要:
快速随机排序的思路是从一个数组中随机选择一个主元,然后将这个主元放到数组的最后.循环数组时,先定义一个指针,发现了比主元小的元素,如果指针和循环下标相同 则只是把指针自增,如果发现循环下标不同则将循环下标与指针位置交换,这样做的目的是始终保证指针左边的元素小于主元,最后循环结束将主元与指针位置交换. 阅读全文
摘要:
希尔排序是插入排序的优化版本.插入排序的思路是每次跟前一个比较,需要交换则交换,然后指针向后移动,再次与前面的比较,如果不需要交换则表示前边的前边也不需要交换. 希尔排序则是通过添加一个步长的概念,每次把当前元素与增加步长后的元素比较,如果交换则交换.然后再次增加步长去比较,这个过程与插入排序一样. 阅读全文
摘要:
上一篇说了冒泡排序,这次说选择排序.选择排序与冒泡排序十分相似.冒泡排序是每一轮中的每一次都讲最小值交换.而选择排序是将每一轮中最小的值记录下标记录下来,一轮过后只交换一次,从空间上来说比冒泡排序好. 但是从时间复杂度来说是一样的.此算法的时间复杂度为O(n^2) public static voi 阅读全文
摘要:
冒泡排序是最好理解的排序方式,从第二个元素开始循环如果比第一个元素小则交换位置,继续向后冒泡,一圈下来确定了下标位置0是最小的元素.以此类推.此算法的时间复杂度为O(n^2) public static int[] maopao(int[] arr) { for (int i = 0; i < ar 阅读全文
摘要:
线性查找 在一个无顺序的数组中找到第k大的元素是几. 这个问题最简单的解法是先将数组进行排序,然后返回下标k上的元素.如果使用上一节的归并排序则时间复杂度是O(nlogn) 那是否有更好的思路呢.同样我们还是使用分治策略,先从数组中找到一个合适的主元,围绕这个主元划分子数组.比主元小的 划分到左边, 阅读全文
摘要:
插入排序 插入排序举个最好的例子就是扑克牌,当我们手里拿了N张无序的牌,如果要对牌进行排序,最好的思路是从第二张开始,我们设置这个为i,让它和前边的牌做比较如果需要换位置就换,换了以后继续往前在看需不需要换。如果i-x牌不需要和i交换 则终止,然后i向后移动,直到手里的扑克牌到最后一张也跟前边的依次 阅读全文
摘要:
用循环计算两个数字的乘积 用循环解决这个问题只能是类似于小学乘法个位与个位相乘,个位与十位相乘。十位与个位相乘,十位与十位相乘。此算法的时间复杂度为O(n^2) public static long f1(String n1, String n2) { int sum = 0; for (int i 阅读全文