
算法
文章平均质量分 92
一些与算法相关的博客
八千里路云和月laiker
等记忆中最美的晚霞
展开
-
消息队列(RocketMQ+Kafka)
是阿里云开发,后并入Apche的开源分布式消息队列框架。支持高并发,低延迟,以及集群部署能力。知识点:什么是零拷贝零拷贝是一个相对的概念,针对用户空间于内核空间的交互,使用mmap (内存映射)+write操作让用户空间和内核空间实现零拷贝,但是内核空间依然有3次拷贝,因此这里的零拷贝相对的是用户和内核空间。原创 2025-02-26 17:14:39 · 1165 阅读 · 0 评论 -
二进制中1的个数,解题总结,深入理解整型数据的存储
文章目录我呆头呆脑的方式????: 完全模拟整数到二进制补码的过程大神解锁方式????????????:一切都是位运算从本题中获得的对整型数据存储的深入理解题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。这是一道并不复杂的,很基础的题。但是通过这道题,我更深刻的了解到了:java对于整型数据的处理。位运算巧妙。作为一个编程菜鸟,看题之后,我就知道,利用位运算是最为恰当的方式,但是...原创 2020-03-01 23:19:42 · 339 阅读 · 0 评论 -
七个最常用排序的代码(java)
七个最常用排序:冒泡排序选择排序插入排序希尔排序归并排序快速排序堆排序1.冒泡排序链接:深入理解冒泡排序 public static void bubbleSort(int[] value,int length){ for(int i=1;i<length;i++){ for(int j=0;j<length-i;j++){ if(valu...原创 2019-10-04 16:43:23 · 150 阅读 · 0 评论 -
深入理解堆排序
>>堆排序堆排序是插入排序的一种,且利用了数据结构中的完全二叉树。堆排序的思路: 给定一个数组,将数组排成这样一个完全二叉树:每个顶点大于子节点的叫大顶堆,每个顶点小于子节点的叫小顶堆,大顶堆是升序,小顶堆的降序。然后将第一个节点所得到的最值,与最后一个节点交换,并立即维护这个完全二叉树,循环直到只剩一个节点。平均时间复杂度: O(n log n)最好情况: O(n lo...原创 2019-10-04 16:07:28 · 155 阅读 · 0 评论 -
深入理解归并排序
>>归并排序听到用到最多的还是冒泡排序和快速排序,归并排序只知其名,但是我还没实际使用过,今天又重新去理解它,发现它有快速排序的影子(分治递归),且这两个排序都是高效的高级排序,所以给了我一种印象:这种思想非常高大上,但当你仔细去瞧它,又觉得它平易近人。归并排序的思路: 给定一个数组,将数组分为两部分,先让左边的有序,在让右边的有序,最后将两部本合并。左边部分和右边部分又依次...原创 2019-10-03 17:12:22 · 171 阅读 · 0 评论 -
深入理解希尔排序
>>希尔排序希尔排序是在插入排序的基础上编写的,由于插入排序元素移动时每次只移动一个位置,所以在数组较大的情况下,效率会很低,因此引入了希尔排序。希尔排序的思路: 给定一个数组,引入增量,将数组在逻辑上分为几个组,每个组的元素下标相差一个增量,再对这个逻辑上数组进行插入排序。平均时间复杂度: O(n log n)最好情况: O(n log^2 n)最坏情况: O(n l...原创 2019-10-02 17:56:13 · 755 阅读 · 0 评论 -
比较直接插入排序和二分插入排序
直接插入排序和二分插入排序的主要区别就在元素之间判断总次数多少上。1. 直接插入排序代码: /* * 直接插入排序。 * */ public static void insertSort(int[] value,int length){ int temp; for(int i=1;i<length;i++){ temp=value[i]; int j=...原创 2019-10-02 16:51:34 · 472 阅读 · 0 评论 -
深入理解插入排序(why二分插入排序中left就是待插入位置)
>> 插入排序本编重点在最后: 为什么二分插入left总是指向待插入的位置?插入排序的思路: 给定一个数组,将数组划分为,已排序和未排序两部分,默认第一个元素已排序,然后一次遍历未排序数列,找到每个元素在已排序数列中的位置,移动元素,并插入。平均时间复杂度: O(n^2)最好情况: O(n)最坏情况: O(n^2)空间复杂度: O(1)稳定性: 稳定 排序前相等...原创 2019-10-01 20:11:40 · 260 阅读 · 0 评论 -
比较冒泡排序与选择排序
>>冒泡排序与选择排序的异同相同之处: 从代码上,看去其实有很多熟悉的地方,都是两层循环,第一层循环都是length-1次,第二层循环次数都受到第一层循环的影响。从思路上,两种算法都有一种逐个击破的思想,冒泡排序,每一次内层循环都选择出一个可以确定位置的数;选择排序,每一次内层循环也是选择出一个可以确定位置的数,只是实现的方式不同。不同之处: 从代码上,冒泡排序的第一层循环变量...原创 2019-09-30 13:44:03 · 406 阅读 · 0 评论 -
深入理解选择排序
>> 选择排序冒泡排序可能非你所想。冒泡排序的思路: 给定一个数组,每次循环以此找到最小的数的下标,最后与相应的下标的值交换。平均时间复杂度: O(n^2)最好情况: O(n^2) 已经排好序最坏情况: O(n^2) 倒叙的时候空间复杂度: O(1) 没有占用额外的空间稳定性: 不稳定 排序前相等的两个数,排序后位置不变: ) 选择排序值得注意...原创 2019-09-30 13:14:15 · 241 阅读 · 0 评论 -
深入理解冒泡排序
>> 冒泡排序冒泡排序可能非你所想。冒泡排序的思路: 给定一个数组,每次循环出最大的数依次向后排,并将较小的数向前冒。平均时间复杂度: O(n^2)最好情况: O(n) 已经排好序最坏情况: O(n^2) 倒叙的时候空间复杂度: O(1) 没有占用额外的空间稳定性: 稳定 排序前相等的两个数,排序后位置不变: ) 快速排序值得注意的是:第一层循...原创 2019-09-30 12:54:00 · 230 阅读 · 0 评论 -
深入理解快速排序
>> 快速排序快速排序,一个既默认,又熟悉的名字。记得从大一下期起,就开始接触这个算法,一直到现在,两年半了。期间,不断在上课,书籍中遇见,机房或自己在电脑里练习,但是过不了多久就会忘记。今天我终于花了一整天的时间,重新凝视这个熟悉的陌生人,对它有了新的认识,仿佛与一位失联已久的老友重拾旧情,感慨颇深。快速排序的思路: 给定一个数组,以一个数为基准(称为变元),把小于它的放...原创 2019-09-29 20:20:43 · 174 阅读 · 0 评论