
Data structures and algorithms
seuStones
Java架构
展开
-
排序算法·快速排序
排序算法·快速排序原创 2017-07-03 20:41:48 · 314 阅读 · 0 评论 -
排序算法·选择排序
算法讲解方面参阅下面这本书即可,这里只给出自己练习时实现的代码。参考书籍:《算法设计与分析基础》1.伪代码算法: SelectionSort(A[0...n-1]) //该算法用选择排序对给定的数组排序 //输入:一个可排序数组A[0...n-1] //输出:升序排列的数组A[0...n-1] for i = 0 to n-2 do mi原创 2017-09-08 11:21:18 · 213 阅读 · 0 评论 -
排序算法·冒泡排序
算法讲解方面参阅下面这本书即可,这里只给出自己练习时实现的代码。参考书籍:《算法设计与分析基础》1.伪代码算法: BubbleSort(A[0...n-1]) //该算法用冒泡排序对给定的数组排序 //输入:一个可排序数组A[0...n-1] //输出:非降序排列的数组A[0...n-1] for i = 0 to n-2 do for原创 2017-09-08 12:40:09 · 377 阅读 · 0 评论 -
排序算法·插入排序
算法讲解方面参阅下面这本书即可,这里只给出自己练习时实现的代码。参考书籍:《算法设计与分析基础》1.伪代码算法: InsertionSort(A[0...n-1]) //该算法用插入排序对给定的数组排序 //输入:一个可排序数组A[0...n-1] //输出:非降序排列的数组A[0...n-1] for i = 1 to n-1 do v原创 2017-09-08 17:03:39 · 285 阅读 · 0 评论 -
查找算法·折半查找
算法讲解请参阅下面参考书籍,这里只给出自己练习时的代码实现。参考书籍:《算法设计与分析基础·3ed》1.伪代码算法: BinarySearch(A[0...n-1], K) //实现非递归的折半查找 //输入:一个升序数组A[0...n-1]和一个待查找元素K //输出:如果元素存在,则输出查找元素所对应的数组下标;如果没有,则返回-1 l = 0; r原创 2017-09-09 11:49:34 · 907 阅读 · 0 评论 -
查找算法·快速选择
算法讲解请参阅下面参考书籍,这里只给出自己练习时的代码实现。参考书籍:《算法设计与分析基础·3ed》1.伪代码Lomuto划分算法: LomutoPartition(A[l...r]) //采用Lomuto算法,用第一个元素作为轴对子数组进行划分 //输入:数组A[0...n-1]的一个子数组A[l...r],左索引l,右索引r,l<=r //输出:A[原创 2017-09-09 16:45:52 · 819 阅读 · 0 评论 -
排序算法·合并排序
算法讲解请参阅下面参考书籍,这里只给出自己练习时的代码实现。参考书籍:《算法设计与分析基础·3ed》1.伪代码算法1: Mergesort(A[0..n-1]) //递归调用mergesort来对数组A[0..n-1]排序 //输入:一个可排序数组A[0..n-1] //输出:非降序排列的数组A[0..n-1] if n > 1原创 2017-09-09 22:03:27 · 449 阅读 · 0 评论 -
分治·减治·变治
分治法(Divide and Conquer)算法设计思想: 1. 分解:把问题递归分解为两个以上的子问题(子问题:与原问题性质相同,规模较小); 2. 求解:求解子问题(不再分解) 3. 合并:合并子问题的解,得到原问题的解;相关算法: 1. 合并排序 2. 快速排序减治法(Decrease and Conquer)算法设计思想: 1. 减小规模:递归减小子问题的规模(一个子原创 2017-09-10 13:47:58 · 1111 阅读 · 0 评论