算法
风吹未扬
这个作者很懒,什么都没留下…
展开
-
原地倒置算法
void reverse(int A[],int left,int right){ while(left<right) swap(A[left++],A[right--]);}如果是整体置换,left=0,right=A.length。还有其他的情况请自行思考。原创 2020-07-20 20:35:24 · 207 阅读 · 0 评论 -
1.3二分搜索
1.3二分搜索算法1.1 LINEARSEARCH先对线性搜索搜索进行描述,为二分排序进行铺垫下面展示的是书中的伪代码:算法1.1:LINEARSEARCH输入:n个元素的数组A[1···n]和元素x输出:如果x=A[j],1<=j<=n,则输出j,否则输出0 1.j <- 1 2.while(j<n) and (x!=A[j]) //逐一进行比较,将与x相...原创 2019-10-23 18:47:25 · 185 阅读 · 1 评论 -
4.2堆
4.2堆堆就我理解就是用数组表示一个完全二叉树,用上hashcode应该就是能更快找到数据4.2.1堆上的运算堆上的运算在此进行的shiftdown,不演示shiftup,为了实现最终的heapsort,shiftdown本身就是对数组进行堆排序下面展示的是书中的伪代码:过程:SHIFT-DOWN输入:数组H[1···n]和位于1和n之间的索引i输出:下移H[i],以使它不小于子结点...原创 2019-10-18 20:31:09 · 229 阅读 · 0 评论 -
5.6生成排序
5.6.1第一种算法生成排序的用途在于生成所有的排列问题下面展示的是书中的伪代码:PREMUTATIONS1输入:正整数n输出:数1,2,····,n的所有可能排序 1.for j <- 1 to n 2. p[j] <- j 3. end for 4. perm1(1)过程 perm1(m) 1.if m = n then output p[1····n]...原创 2019-10-16 19:40:50 · 469 阅读 · 0 评论 -
5.3基数排序
5.3基数排序基数排序的用途在于对相同位数的编号进行排序,例如学号,商品编码下面展示的是书中的伪代码:RADIXSORT输入:一张有n个数的表L={a1,a2,a3....,an}和k位数字。输出:按非降序排序的L1.for j <- 1 to k2. 准备10个空表L0,L1,...,L93. while L 非空4. a <- L中的下一个元素;删除a。 ...原创 2019-10-15 22:16:33 · 190 阅读 · 0 评论 -
1.4合并两个已排序的表(MERGE)
MERGE算法的JAVA实现最近在学习算法的时候,老师让我们实现ButtomUpSort算法,然后实现的时候发现在ButtomUpSort算法中调用MERGE算法中带入了三个参数i+1,i+s,i+t,忽然就被看懵了,然后想了想逐步拆解ButtomUpSort算法,所以写了如下MERGE算法实现具体代码如下:最近在学习算法的时候,老师让我们实现ButtomUpSort算法,然后实现的时候发现在B...原创 2019-09-17 21:44:15 · 442 阅读 · 0 评论 -
1.7自底向上合并排序(ButtomUpSort)
ButtomUpSort算法的JAVA实现上课的时候,因为有很多人问: ButtomUpSort算法里面MERGE算法中带入了三个参数i+1,i+s,i+t到底是什么,所以老师顺带的讲了讲他们分别指p,q,r,但是i+1=q是如何而来的,至今也没有弄清楚,但是知道了这三个参数,那么代码的实现也就简单了。代码如下:/** * @author Sheye * @date 2019-09-17...原创 2019-09-21 13:24:21 · 745 阅读 · 0 评论