
算法设计与分析
文章平均质量分 59
为研究生期间同名课程的学习笔记
所使用的教材为《算法导论》原书第三版
Comet_Bay
这个作者很懒,什么都没留下…
展开
-
冒泡排序,折半查找,选择排序和插入排序Java实现及解析
一、冒泡排序 通过按顺序将元素的逐个比较大小和交换形成有序的元素序列。 public static void bubbleSort(int a[]){ // 外层循环控制排序趟数(核心是要控制执行n-1趟排序) for(int i = 0;i < a.length - 1;i++){ // 里层循环控制每一趟排序过程中前后相邻位置的数,比较和交换的过程 for( int j = 0;j < a.length - i -1;j++){ // j表示每一趟排序过程中待比较的下标位置,从原创 2021-06-15 00:32:48 · 1582 阅读 · 3 评论 -
单向链表的逆置/反转(Java实现)
一、定义链表 单向链表的性质决定了,由单向链表头节点可以获取整个链表 public class Node { public int value; public Node next; // 链表的第一个节点,next指针指向空内存 public Node(int i){ value = i; next = null; } /** * 向链表中添加新节点 * @param head 头节点 * @par原创 2021-09-17 23:08:58 · 376 阅读 · 0 评论 -
使用双向链表和数组分别实现栈和队列(Java语言实现)
一、双向链表实现栈和队列 双向链表 比较方便,而且思路清晰的做法是,先使用双向链表实现双向队列。 双向队列可以在头部或者尾部添加或者弹出元素。 随后部分调用双向队列的功能,即可实现栈或队列的功能。(栈:只能从头部添加和弹出元素,链表:只能从头部添加元素,从尾部取出元素)。 // 双向链表 public static class Node<T> { public T value; public Node<T> last; // 前驱指针 public Nod原创 2021-09-21 22:03:37 · 449 阅读 · 0 评论 -
归并排序(MergeSort) Java实现及解析
package class03; public class Code01_MergeSort { // 递归方法实现 public static void mergeSort1(int[] arr){ if(arr == null || arr.length < 2){ return; } process(arr, 0, arr.length - 1); } // 递归函数的定义:让arr在[L原创 2021-10-13 23:45:18 · 2004 阅读 · 3 评论 -
快速排序 Java实现解析
package class03; /* 快排的治的逻辑:给定一个数,将数组按小于,等于,大于分成三个区域 所以会有小于区边界,大于区边界两个变量被定义 */ public class Code03_PartitionAndQuickSort { public static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j原创 2021-10-13 23:50:14 · 171 阅读 · 0 评论 -
算法复杂度分析中常用的五种渐近记号
算法复杂度分析中常用的五种渐近记号原创 2024-09-18 12:34:11 · 248 阅读 · 0 评论