文章506
标签266
分类65
使用Rust实现一个双向链表

使用Rust实现一个双向链表

如何激怒一个Rust爱好者?让他用Rust实现一个双向链表即可!

总所周知,Rust中是不能同时存在两个可变引用的,所以在Rust中实现双向链表就会变得非常反人类(因为需要同时存在前后节点同时指向对方的情况);

同时,双向链表也引入了循环引用的问题,这也是导致内存难以释放的一个场景;

没想到一个简简单单的双向链表居然涉及如此之多的问题!

本文就使用Unsafe Rust实现了双向链表;

源代码:


一致性Hash算法总结与应用

一致性Hash算法总结与应用

并发排序从ForkJoin到Stream

并发排序从ForkJoin到Stream

在前面几种常见排序方法的优化(下)一文中, 我总结了针对归并排序的一些优化方法.但是即使是优化, 整个排序过程也是建立在单个线程当中的

而自顶向下的归并排序在将数组拆分之后, 左右两部分是不会被同一个递归栈访问的, 容易想到可以开辟两个线程(递归的)分别进行左右归并排序

本篇就在此基础之上探讨有关ForkJoin和Stream的一些操作

本文内容包括:

  • ForkJoin简单讲解
  • 基于多线程(ForkJoin)的归并排序的实现
  • 使用Stream进行并发排序
  • 排序性能测试

源代码:

如果觉得文章写的不错, 可以关注微信公众号: Coder张小凯

内容和博客同步更新~


Fibonacci序列生成算法的优化

Fibonacci序列生成算法的优化

菲波那切数列在一些场景中很有用. 相信如何计算第n个斐波那契数是一些人接触到的第一个递归算法(尽管他的效率很低). 本篇讲述了如何一步步优化计算fib(n)

本文内容包括:

  • 菲波那切数列定义
  • 计算斐波那契方法
    • 递归
    • 循环
    • 通项公式
    • 矩阵乘法
  • 斐波那契方法性能测试

源代码: https://github.com/JasonkayZK/Java_Algorithm/tree/master/src/main/java/algorithm/basic

本文部分内容转自: 斐波那契数列 — 四层优化

如果觉得文章写的不错, 可以关注微信公众号: Coder张小凯

内容和博客同步更新~


几种常见排序方法的优化(下)

几种常见排序方法的优化(下)

最近花了几天重温了一下《算法(第四版)》, 重新把书中的算法实现了一下, 并且思索了一下, 把常见的比较排序算法都给优化了一下, 然后进行了性能测试. 也算是复习了一下排序算法吧.

阅读本篇之前最好有常见几种基于的比较排序算法的基础

本文内容包括:

  • 归并排序优化及性能测试
  • 快速排序优化及性能测试
  • 堆排序序优化及性能测试
  • 非比较排序介绍
    • 计数排序
    • 桶排序
    • 基数排序

源代码:

如果觉得文章写的不错, 可以关注微信公众号: Coder张小凯

内容和博客同步更新~


几种常见排序方法的优化(上)

几种常见排序方法的优化(上)

最近花了几天重温了一下《算法(第四版)》, 重新把书中的算法实现了一下, 并且思索了一下, 把常见的比较排序算法都给优化了一下, 然后进行了性能测试. 也算是复习了一下排序算法吧.

阅读本篇之前最好有常见几种基于的比较排序算法的基础

本文内容包括:

  • 排序算法的一些通用方法抽象类(父类BaseSort)
  • 冒泡排序优化及性能测试
  • 选择排序优化及性能测试
  • 插入排序优化及性能测试
  • 希尔排序以及不同递增序列的性能测试

源代码:

如果觉得文章写的不错, 可以关注微信公众号: Coder张小凯

内容和博客同步更新~


QuickSort总结

QuickSort总结

最近总结面试题, 复习了一下面试题, 顺便研究了一下快排的优化

主要内容:

  • 快排算法实现原理
  • 基于Java的快排算法实现
  • 通过泛型和Comparator接口实现任意数据任意顺序排序
  • 快排时间复杂度(最好, 最差, 平均), 空间复杂度
  • 快排可做的优化