数据结构和算法
luoChao0916
这个作者很懒,什么都没留下…
展开
-
快速排序
快速排序的分析 快速排序的流程 快速排序的代码实现public static void main(String[] args) { //1.定义要排序的数组 int[] arr = {5,2,6,8,4,3,7}; //2.定义变量low保存数组中第一个元素的索引 int low = 0; //3.定义变量high...原创 2018-08-28 11:03:17 · 241 阅读 · 0 评论 -
选择排序
选择排序原理首先,找到数据中最小的那个元素,将它和数组中的第一个元素交换位置。在剩下的元素中找到最小的元素,将它与数组中的第二个元素交换位置,如此反复,直到整个数组排序。代码实现public class SelectSort { public static void main(String[] args) { int [] arr = {1,6,7,8,2,4,5,3...原创 2019-07-08 21:27:34 · 98 阅读 · 0 评论 -
使用两个栈来完成算数表达式求值
栈(stack)后进先出(FILO)策略的数据结构。 public class Evaluate { public static void main(String[] args) { System.out.println(evaluate()); } /** * 使用两个栈来完成表达式运算 * 表达式由括号、运算符、和操作数...原创 2019-07-08 23:10:46 · 1102 阅读 · 1 评论 -
二分查找(循环+递归)
循环public class BinarySearch { public static void main(String[] args) { int[] arr = {1,2,4,5,6,8,9}; System.out.println(binarySearch(arr, 8)); } /** * 二分查找 * @pa...原创 2019-07-07 10:04:06 · 461 阅读 · 0 评论 -
散列表+双向链表实现LRU算法
缓存是一种提高数据读取性能的技术,比如常见的CPU缓存,数据库缓存以及浏览器缓存。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?缓存淘汰策略,常见的有三种,先进先出策略FIFO,最少使用策略LFU,最近最少使用策略LRULeast Recently Used)。散列表+双向链表实现LRU算法我们需要维护一个按照访问时间从大到小有序排列的链表结构。因为缓存大小...原创 2019-08-19 18:27:03 · 760 阅读 · 0 评论 -
合并两个有序数组
同一个数组中的元素都是有序的,不需要进行比较,只需要比较两个数组中的元素。while(A 中还有未遍历元素 && B中还有未遍历元素)如果a[i] < b[j] --> C[i+j] = a[i++];否则 c[i+j] = b[j++]A数组的第i个元素与B数组的第j个元素进行比较这时,说明A数组中有i个元素,B数组中有j个元素保存到了C中,因此,下...原创 2019-08-20 11:56:53 · 172 阅读 · 0 评论