算法
WHY NOT ?
这个作者很懒,什么都没留下…
展开
-
快速排序算法
学习链接:https://www.bilibili.com/medialist/detail/ml1307517522?type=1 注意:i 和 j 相遇时的数一定是小于等于基准数的,i和j相遇的情况分为两种: 1、j指针找到了比基准数小的数,停下了,接下来是i进行检索,一直没检索到比基准数大的数,当i 与j相遇时,就停下了。 2、j指针没检索到比基准数小的数,一直检索,这时的i指针指向的数一定是是停在比基准数遇到i指针就停下,此时的i指针 package com.atguigu.sort; impo原创 2021-08-02 19:56:18 · 322 阅读 · 0 评论 -
归并排序算法
归并排序 {8,4,5,7}的图解 package com.atguigu.sort; import java.util.Arrays; public class MyMergeSort { public static void main(String[] args) { int[] arr = {8,4,5,7,1,3,6,2}; int[] temp = new int[arr.length]; mergeSort(arr,0,arr.len原创 2021-08-02 17:34:04 · 68 阅读 · 0 评论 -
希尔排序算法
1、希尔排序是对直接插入排序的改进,加入了分组的思想,分完组后进行直接插入排序。分组依据是增量gap,初始值是数组长度/2, 增量变化:gap/=2。gap也可以代表组数。 2、编程思路:嵌套3个循环,第一循环控制分组次数,第二个循环从下标为gap的元素开始循环,依次扫描数组,通过下标j=i-gap可以找到对应分组的元素。 3、直接插入排序的代码可以对比着插入排序法改写 for (int gap = arr.length/2; gap > 0 ; gap /= 2) { //gap既代表增量,又原创 2021-08-02 17:31:25 · 91 阅读 · 0 评论 -
时间复杂度
时间频度指语句被重复执行的次数,而不是程序执行过多少条代码; 例如以下代码,时间频度是1,无论有多少行代码,只要没有循环等复杂结构,时间频度都是1,时间复杂度都可以用常数阶O(1)表示。 ...原创 2021-07-30 11:33:35 · 69 阅读 · 0 评论 -
环形链表2
1、解释为什么slow指针在没走完环的一圈能被fast指针追上? 假设1:slow指针每秒走1个结点,fast指针每秒走2个结点。 假设2:环一共有N个结点。 假设3:slow指针与fast指针的初始距离为L个结点(0<=L<=N-1)。 分析思路: 1)fast指针每秒钟离slow指针近1个结点 2) slow指针走完一圈需要N秒,记作t_s(slow指针走完一圈的时间) 3) fast指针追上slow指针需要L/2秒,即0~(N-1)/2 秒,记作t_f(fast指针追上slow指针需要的时原创 2021-07-17 16:02:39 · 64 阅读 · 0 评论