算法
文章平均质量分 61
在学习过程中遇到了“形形色色”的排序,但是每种排序都有着自己的“特点”,本专栏将带你走进算法的奥妙世界,更容易的理解及应用各种排序!
Adam`南帝·梁
世上哪有什么岁月静好,不过是有人替你负重前行
展开
-
深入:二分查找算法(分治)
前言:二分查找算法也称折半搜索算法,对数搜索算法,是一种在有序数组中查找某一特定元素的搜索算法。形象图:动图演示点击查看循环实现: /** * while实现 * @param a * @param fromIndex * @param toIndex * @param key * @return */ private static int binarySearch0(long[] a, int fromIndex,原创 2022-05-07 17:05:59 · 523 阅读 · 0 评论 -
浅谈算法之冒泡排序
前言:冒泡排序是交换排序的一种,通过C#代码实现来理解冒泡的思想。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。形象图: 例:已知一组无序数据a[1]、a[2]、……a[n原创 2017-10-28 10:52:08 · 490 阅读 · 89 评论 -
浅谈算法之选择排序
简单选择排序前言: 选择排序(Selection sort)是一种不稳定的排序方法,每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。其主要应用于计算机和数学领域。它的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终原创 2017-10-31 23:38:28 · 443 阅读 · 54 评论 -
浅谈算法之快速排序
快速排序前言: 快速排序(Quick Sort)是一种有效的排序算法。虽然算法在最坏的情况下运行时间为O(n^2),但由于平均运行时间为O(nlogn),并且在内存使用、程序实现复杂性上表现优秀,尤其是对快速排序算法进行随机化的可能,使得快速排序在一般情况下是最实用的排序方法之一。快速排序被认为是当前最优秀的内部排序方法。 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数原创 2017-11-12 22:31:32 · 381 阅读 · 62 评论 -
浅谈算法之归并排序
归并排序前言:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。形象图: 代原创 2017-11-26 21:41:10 · 456 阅读 · 80 评论 -
浅谈算法之堆排序
前言: 堆排序(Heapsort)是指利用堆积树(堆)这种 数据结构所设计的一种 排序算法,它是选择排序的一种。可以利用 数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是 完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即 A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。形原创 2017-11-30 20:16:26 · 315 阅读 · 64 评论 -
浅谈算法之动态规划
前言:动态规划算法 动态规划(Dynamicprogramming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。通...原创 2018-03-25 21:10:05 · 388 阅读 · 22 评论 -
浅谈算法之二分查找法
二分查找算法前言: 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。二分查找形象图: 线性查找对比图:原创 2018-01-14 23:36:14 · 423 阅读 · 72 评论 -
一天一个设计模式:桥接模式
前言:设计模式是我们学习过程中必不可少的知识。总结:原创 2018-05-20 23:47:21 · 228 阅读 · 18 评论 -
一天一个设计模式:单例模式
前言: 由于工作需要,开始重新学习一下设计模式,感受设计演变过程中所蕴含的大智慧。先从最简单的单例模式讲起,首先大家先看看什么叫单例模式。什么是单例模式? 单例模式(Singleton)保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可...原创 2018-04-29 15:36:16 · 313 阅读 · 19 评论 -
一天一个设计模式:外观模式
前言:什么是外观模式?外观模式的作用?何时用外观模式?类图:总结:原创 2018-05-14 18:11:39 · 251 阅读 · 11 评论