算法
昉钰
这个作者很懒,什么都没留下…
展开
-
堆排序算法一(算法分析与实现)
说明:该算法为堆排序算法,待排序的数据从第二位置开始存放,第一个位置不用。算法思路:该算法依赖于堆调整这样一个基本过程,一般来说排序过程分为如下两步:1 建立大顶堆。2 根据堆来进行排序。具体如下程序(程序说明部分对算法进行了详细分析):package com.sharpandroid.junitTest;import java.util.Random;原创 2015-04-21 22:44:28 · 372 阅读 · 0 评论 -
堆排序算法二(堆排序算法的应用)
由于大顶堆的性质,我们可以使用堆来实现最大优先级队列,最大优先级队列包括如下操作:1)HeapMaxiMum(array)返回集合中具有最大关键字的元素。2)HeapExtractMax(array)去掉并返回集合中具有最大关键字的元素。3)原创 2015-04-21 23:04:07 · 409 阅读 · 0 评论 -
插入排序算法
这里介绍简单的插入排序算法,思路如下: 用一个长度为N+1的数组A存储要排序的N个数组(第一个位置不用,所以要处理的只有N个数据),从第三个位置开始,逐个的把后面的数据插入到前面已经排好序的数组中,具体处理细节如下: 1)升序排序时,如果当前要处理的位置index的值(令为key)小于前一个值,则放置他的位置前移;此时说明小的值排在前面,因为小的值往前移了,后面的自然是大的原创 2015-04-16 13:07:12 · 498 阅读 · 0 评论 -
合并排序算法
说明:该算法为合并排序算法,待排序的数据从第二位置开始存放,第一个位置不用。算法思路:假设数组长度的N+1,由于第 一个位置不用所以只有N个数是待排序的数据,把这N个数据分为两组,然后分别对左右两组进行排序,排序好以后再对左右两组进行合并,这个过程一直递归下去直到满足left>=right这个条件。程序如下:package com.sharpandroid.junitTest;原创 2015-04-16 14:53:14 · 537 阅读 · 0 评论 -
计数排序
package com.sharpandroid.junitTest;import java.util.Random;import org.junit.Test;/** * 说明:该算法为计数排序算法,从第二个位置也就是索引为1的位置开始存储排序的数据(第1位置不用),大致 * 思路如下: * @author xuecheng * */public cl原创 2015-04-30 09:42:20 · 284 阅读 · 0 评论 -
快速排序思想及实现
该算法为快速排序算法,从第二个位置也就是索引为1的位置开始存储排序的数据(第1位置不用),大致思路如下: 算法调用quickSort(A,p,r)对位于p到r之间的数据进行排序,quickSort首先判断区间[p, r]是否可以排序,如果可以则先调用 partion(A, p, r)产生一个划分q,然后再对[p, q-1]与[q+1, r]这两个区间进行递归调用进行排序。 算法的重点在于对partion的实现,其大致思路为:[p, r]是要产生划分的区间,令指示器j = p,i在是p之前的原创 2015-05-16 10:46:01 · 389 阅读 · 1 评论 -
随机快速排序
该算法为随机快速排序算法,它是对快速排序的一种改进,在一般快速排序中的主元是在一个固定位置选取的,这样选取的位置可能并不会产生一个好的划分(划分后左右两边的元素数量大致相等),随机快速排序则是在主元上入手,增加主元的随机性,从而一定程序上平均划分的不平均性。算法同样从第二个位置也就是索引为1的位置开始存储排序的数据(第1位置不用),大致思路如下: 算法调用quickSort(A,p,r)对位于p到r之间的数据进行排序,quickSort首先判断区间[p, r]是否可以排序,如果可以则先调用 part原创 2015-05-16 10:56:22 · 510 阅读 · 0 评论 -
冒泡排序
package com.sharpandroid.junitTest;import java.util.Random;import org.junit.Test;/** * 说明:该算法为插入排序算法,从第二个位置也就是索引为1的位置开始存储排序的数据(第1位置不用),大致 * 思路如下: * 大的数据往下沉,小的往上浮。(这里采用前者) * @原创 2015-05-16 11:06:28 · 307 阅读 · 0 评论