# 使用Java实现高效的数据结构与算法

1. 动态数组

package cn.juwatech.datastructures;
import java.util.Arrays;
public class DynamicArray<T> {
private Object[] array;
private int size;
private int capacity;
public DynamicArray() {
this.capacity = 10;
this.array = new Object[capacity];
this.size = 0;
}
public T get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of bounds: " + index);
}
return (T) array[index];
}
if (size == capacity) {
increaseCapacity();
}
array[size++] = element;
}
private void increaseCapacity() {
capacity = capacity * 2;
array = Arrays.copyOf(array, capacity);
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
}

2. 快速排序算法

package cn.juwatech.algorithms;
import java.util.Arrays;
public class QuickSort {
public static void sort(int[] array) {
if (array == null || array.length == 0) {
return;
}
quickSort(array, 0, array.length - 1);
}
private static void quickSort(int[] array, int left, int right) {
if (left >= right) {
return;
}
int pivot = partition(array, left, right);
quickSort(array, left, pivot - 1);
quickSort(array, pivot + 1, right);
}
private static int partition(int[] array, int left, int right) {
int pivot = array[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (array[j] < pivot) {
i++;
swap(array, i, j);
}
}
swap(array, i + 1, right);
return i + 1;
}
private static void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
public static void main(String[] args) {
int[] array = {5, 2, 9, 1, 5, 6};
System.out.println("Original array: " + Arrays.toString(array));
QuickSort.sort(array);
System.out.println("Sorted array: " + Arrays.toString(array));
}
}

3. 哈希表

package cn.juwatech.datastructures;
public class HashTable<K, V> {
private static final int INITIAL_CAPACITY = 16;
private int size;
public HashTable() {
this.size = 0;
}
public void put(K key, V value) {
int index = getIndex(key);
if (buckets[index] == null) {
}
for (Entry<K, V> entry : bucket) {
if (entry.key.equals(key)) {
entry.value = value;
return;
}
}
size++;
}
public V get(K key) {
int index = getIndex(key);
if (bucket != null) {
for (Entry<K, V> entry : bucket) {
if (entry.key.equals(key)) {
return entry.value;
}
}
}
return null;
}
private int getIndex(K key) {
return Math.abs(key.hashCode() % buckets.length);
}
private static class Entry<K, V> {
K key;
V value;
Entry(K key, V value) {
this.key = key;
this.value = value;
}
}
public static void main(String[] args) {
HashTable<String, Integer> hashTable = new HashTable<>();
hashTable.put("one", 1);
hashTable.put("two", 2);
hashTable.put("three", 3);
System.out.println("Value for key 'two': " + hashTable.get("two"));
}
}

|
4天前
|

AI入门必读：Java实现常见AI算法及实际应用，有两下子！

60 3
|
3天前
|

LeetCode经典算法题：矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题：矩阵中省份数量经典题目+三角形最大周长java多种解法详解
15 6
|
3天前
|

LeetCode经典算法题：打家劫舍java详解
LeetCode经典算法题：打家劫舍java详解
13 2
|
3天前
|

LeetCode经典算法题：井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题：井字游戏+优势洗牌+Dota2参议院java解法
13 1
|
3天前
|

LeetCode经典算法题：预测赢家+香槟塔java解法
LeetCode经典算法题：预测赢家+香槟塔java解法
12 1
|
14天前
|

Java语言实现最短路径算法（Shortest Path）
Java语言实现最短路径算法（Shortest Path）
23 3
|
3天前
|

LeetCode经典算法题：二叉树遍历（递归遍历+迭代遍历+层序遍历）以及线索二叉树java详解
LeetCode经典算法题：二叉树遍历（递归遍历+迭代遍历+层序遍历）以及线索二叉树java详解
6 0
|
3天前
|

LeetCode初级算法题：环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题：环形链表+排列硬币+合并两个有序数组java解法
6 0
|
3天前
|

LeetCode初级算法题：两数之和+斐波拉契数列多种java解法
LeetCode初级算法题：两数之和+斐波拉契数列多种java解法
6 0
|
3天前
|

LeetCode初级算法题：寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149：直线上最多的点数 Java详解
LeetCode初级算法题：寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149：直线上最多的点数 Java详解
8 0