算法
noOnlyAndroid
这个作者很懒,什么都没留下…
展开
-
冒泡排序
<br /> <br />冒泡排序:一种最简单的排序算法。<br />基本思想:依次比较两数,保证小数在前,大数在后。<br />有两种方案:一、在每趟选出最小数,二、每趟选出最大数。<br />每趟选出最大数的实现思想是:在第一趟,比较第一个数和第二个数,如果第一个数大于第二个数,交换这两个数,比较第二个数和第三个数,如果第二个数大于第三个数,交换这两个数,依次类推,比较倒数第二个数和最后一个数,如果倒数第二数大于最后一个数,交换这两个数,最后一个数就是最大数;第二趟,比较第一个数和第二个数,如果第一个数原创 2010-12-31 11:55:00 · 954 阅读 · 1 评论 -
基数排序
<br /><br />箱排序:也称桶排序。<br />基本思想:设置多[k]个箱,依次把a[1],a[2],a[3]…..a[n]按其键值为k放入k个箱中,依次按1-k把k个箱首尾相连。这样就排好序了。<br />例如:把一副52张牌按照点数排序,可以设置13个箱依次表示为1-13,把点数为A的放到1号箱,点数为2-10的分别放入2-10号箱,把J,Q,K分别放入11-13号箱,这样依次连接1-13号箱,就排好序了。<br />基数排序:<br />基数排序的特征:基数排序的每一个键都由d个分量组成ki1原创 2010-12-31 12:34:00 · 504 阅读 · 0 评论 -
红黑树
<br /> 分析见我的资源中原创 2010-12-31 16:19:00 · 631 阅读 · 0 评论 -
des和3Des加密算法实现
DES简介: DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。DES工作的基本原理是,其入口参数有三个:key、data、mode。 key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进原创 2010-12-31 16:45:00 · 17863 阅读 · 4 评论 -
堆排序
堆排序:一种基于堆的排序算法;一些基础概念堆定义:当且仅当该序列满足如下性质(简称为堆性质):(1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ n) //ki相当于二叉树的非叶结点,K2i则是左孩子,k2i+1是右孩子若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。下图为数组对应的大根堆和小根堆。堆的高度:堆可以被看成是一棵原创 2010-12-31 11:39:00 · 571 阅读 · 0 评论 -
shell排序
<br /> <br />Shell排序:一种插入排序。<br />距离的概念:两个数之间的间隔i个数,这两个数的距离就为i<br />例如:1,2,3,4,5,6,7,8。1和2的距离为1;1和3的距离为2。<br />基本思想:先取一个增量d1<n,把待排序的数组按照增量分组,距离为增量d1的分到相同的组,相同组的数据按插入排序排序。接着取d2<d1,重复上面的过程,直到di=1<d(i-1)<…<d1为止。<br />例子:<br /><br />代码实现:<br />privateintshells原创 2010-12-31 11:57:00 · 494 阅读 · 0 评论 -
快速排序
<br /> <br />快速排序:是冒泡排序的改进。<br />基本思想:通过一趟排序把整个序列分为两部分,一部分的所有数比另一部分的所有数都小,再递归的处理这两部分,直到排好序。<br />实例:<br /><br />上面是一趟排序后的结果,275,087,154,061,426,170都要小于503. 相同897,653,908,512,612,677,765,703都大于503;接到对275,087,154,061,426,170;897,653,908,512,612,677,765,703两部原创 2010-12-31 11:59:00 · 697 阅读 · 0 评论 -
插入排序
插入排序:每次按键值把未排序的数插入到已排序队列的适当位置,直到整个序列都排好序为止。基本思想:假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。实例图如下:算法步骤:算法实现:for (int i=low; i for (int j=i; j>low && dest[j-1]>dest[j]; j--)原创 2010-12-31 12:04:00 · 469 阅读 · 0 评论 -
选择排序
<br /><br />直接选择排序:<br />基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的后面(前面),直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。<br />实现思想:<br />1、 针对n个数R[1…n]进行n-1趟选择就可排好序。<br />2、 无序序列R[1…n],有序列为空。<br />3、 第一趟选择,选出最小的数p[k],用p[k]和R[1]进行交换,得到无序序列R[2…n],有序列R[1].<br />4、 第二趟选原创 2010-12-31 12:35:00 · 509 阅读 · 0 评论