程式員的雙手是魔術師的雙手,他們把枯燥無味的代碼變成了豐富多彩的軟體,——《瘋狂的程式員》
前言
資料結構想必大家都不會陌生,對于一個成熟的程式員而言,熟悉和掌握資料結構和演算法也是基本功之一,資料結構本身其實不過是資料按照特點關系進行存盤或者組織的集合,特殊的結構在不同的應用場景中往往會帶來不一樣的處理效率,
資料結構與演算法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 = https://www.cnblogs.com/shaoxiongdu/p/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 = https://www.cnblogs.com/shaoxiongdu/p/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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/281146.html
標籤:其他
上一篇:《演算法筆記》進制轉換問題
下一篇:線索二叉樹的原理及創建
