算法设计与分析
学习算法分析的心得
流年若逝
这个作者很懒,什么都没留下…
展开
-
十大经典排序算法之冒泡排序(Bubble Sort)
最近在学习算法设计的时候自己也仔细研究了下排序相关的算法,就以我们最经典的冒泡排序为例,从一个最经典的算法中看看能分析出些什么经典出来。冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 ...原创 2018-11-25 20:30:54 · 1530 阅读 · 3 评论 -
十大经典排序算法之插入排序(Insertion Sort)
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。通俗点理解就是:每步将一个待排序的记录,按其顺序码大小...原创 2018-12-04 15:03:38 · 2017 阅读 · 0 评论 -
十大经典排序算法之选择排序(Selection Sort)
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 2.1 算法描述n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:初始状态:无序区为R[1..n]...原创 2018-12-02 20:38:51 · 3284 阅读 · 0 评论 -
编写一个算法,实现一维数组a输入任意n个整数,假设n=7,输入7个数字为3,7,6,8,9,4,1
【问题描述】编写一个算法,实现一维数组a输入任意n个整数,假设n=7,输入7个数字为3,7,6,8,9,4,1,然后建立一个具有如图所示的方阵,并输出打印。1,3,7,6,8,9,44,1,3,7,6,8,99,4,1,3,7,6,88,9,4,1,3,7,66,8,9,4,1,3,7【解决方法】从我们输出的结果可以看出,当输入的是3 7 6 8 9 4 1,第一次输...原创 2019-01-06 09:42:48 · 6382 阅读 · 2 评论 -
动态规划--求数列的最大字段和
【问题描述】N个整数,需要从中找出连续的一段数串,使得这串数的和最大。例如-2,11,-4,13,-5,-2, 最大的子串为11,-4,13。则最大字段和为11-4+13=20【解析】对于这种问题我们可以想到的方法有很多,比如蛮力法、二分法以及动态规划,相比其它前面2种方法,动态规划来解决这类问题相对于来说更方便,比如说用二分法来解决这个问题,那么我们需要分三大块去解决这个问题...原创 2019-01-06 11:48:02 · 2515 阅读 · 2 评论 -
将一个正整数翻译成对应英文
【例题】将一个正整数翻译成对应英文。 比如:258 two five eight【解析】 看到这个题目,首先我们需要去分析如何将这输入的数字转换成相对应的英文字母,比如输入2那么我们就需要将它转化成two,那么我们需要建一个数组来保存0-9相对应的英文,如下: String str[] = {"zero", "one", "two", ...原创 2019-01-02 16:07:53 · 1855 阅读 · 0 评论