用开源项目死磕数据结构与算法!

程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件。——《疯狂的程序员》

前言

数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不一样的处理效率。

数据结构与算法Java实现版

项目说明

本项目用Java实现了常见的数据结构与算法,项目结构使用某一数据结构为接口,分别用来连续存储和链式存储进行实现.并包含完整的注释信息.方便阅读与学习.

主要内容

常用数据结构及其算法的Java实现,包括但不仅限于以下部分:

  • 线性表

    • 顺序存储结构实现
    • 链表存储结构实现
    • 顺序存储结果实现
    • 链式存储结构实现
  • 队列

    • 链式存储结构实现
    • 线性存储结构实现
    • 顺序存储结构

    • 链式存储结构

    • 常见的匹配算法

    • 二叉树存储结构
    • 前中后序遍历
    • 赫夫曼编码
  • 查找算法

    • 顺序表查找
    • 有序表查找
    • 线性索引查找
  • 二叉排序树

    • 平衡二叉树
    • 多路查找树
    • 散列表(哈希表)查找
  • 排序算法

    • 冒泡排序
    • 简单选择排序
    • 直接插入排序
    • 希尔排序
    • 堆排序
    • 归并排序
    • 快速排序
  • 等等…

代码规范

该项目严格遵循Java语言的编码规范,并且有很详细的注释

并且每种数据结构都定义了接口,通过数组方式和链表方式分别实现,很适合大家学习.

下方为用数组实现的线性表的部分代码,供大家预览.

    /**
     * 默认容量
     */
    private static final int DEFAULT_CAPACITY = 10;

    private Object [] elementData;

    /**
     * 默认扩容倍数
     */
    private static final int DEFAULT_EXPAND_MULTIPLE = 2;

    /**
     * 元素数量
     */
    private int size;

    /**
     * 创建默认容量(10)的数组线性表
     */
    public ArrayList() {
        elementData = new Object[DEFAULT_CAPACITY];
        size = 0;
    }

    /**
     * 创建指定大小的数组线性表
     * @param size 指定大小
     * @throws Exception 若传入的容量大于9999或者小于0则抛出此异常
     */
    public ArrayList(int size) throws Exception {
        if(size <= 0 || size > 9999) throw new Exception("容量数据错误!");
        elementData = new Object[size];
    }

参考书籍

书名作者出版社ISBN
《大话数据结构》程杰清华大学出版社978-7-302-25565-9
《数据结构与算法分析Java语言描述》马克思·艾伦·维斯陈越机械工业出版社978-7-111-52839-5
《Java编程思想》Bruce Eckel陈昊鹏机械工业出版社978-7-111-2138-6

项目说明

目前,项目并没有完成,仍在继续更新!

项目截图

项目主页截图

项目地址

https://github.com/shaoxiongdu/DataStructureForJava

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿杜吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值