#数据结构与算法

遗传算法实现自动组卷、随机抽题 (转)

using System;using System.Windows.Forms;using System.IO;namespace GA{    public partial class Form1 ...

算法8-排序-基数排序

基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。  不妨通过一个具体的实例来展示一下,基数排序是如何进行的。 设有一个初始序列为:...

算法7-排序-归并排序

将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。综上可知:归并排序其实要做两件事:(1)“分解”—&mdash...

算法6-排序-快速排序

(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。(2)实例:(3)java实现publicclassquickSort{inta[]={49...

算法5-排序-冒泡排序

(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)实例:3)用java实现publicclassbubbleSort{publicbubbleSort...

算法4-排序-堆排序

在介绍堆排序之前,首先需要说明一下,堆是个什么玩意儿。堆是一棵顺序存储的完全二叉树。其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。举例来说,对于n个元素的序列{R0, R1,..., Rn}当且仅当满足下列关系...
代码星球 代码星球·2020-04-06

算法3-排序-简单选择排序

基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。选择排序的思想其实和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。举个...

算法笔记2-排序-希尔排序(最小增量排序)

基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。publicclassshellSort{publics...

算法笔记1-排序-插入排序

插入排序的工作方式就像排序一手扑克牌。开始时,我们的左手为空,然后,我们每次从桌上拿走一张牌并将它插入到左手中正确的位置。为了找到正确的位置,我们总是从右到左将它与左手中的每张牌进行比较。这样,左手中的牌始终是排好序的,直到最后一张。 插入排序的时间复杂度是O(n^2),因此,对于小规模问题,能有效解决,但是...

Hash算法初见

hash算法(hashmap实现原理)      Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散...
代码星球 代码星球·2020-04-06

【转】编写高质量代码改善C#程序的157个建议——建议119:不要使用自己的加密算法

 建议119:不要使用自己的加密算法很多人认为自己写的加密算法才是安全的,因为该算法只有“自己知道”。很遗憾,这是大错特错。首先,我们不是秘密学专家,如果我们随随便便写个算法就称得上是加密算法的话,那么世界上就不会存在“密码学”这个专门的学科了。其次,应当记住的...

【转】编写高质量代码改善C#程序的157个建议——建议116:避免用非对称算法加密文件

 建议116:避免用非对称算法加密文件MD5值或者说HASH值是一种不可逆的算法。如果需要从密文还原成明文,那么就需要对称和非对称这两类可逆算法了。对称算法示意图:在对称算法中,首先需要发送方和接收方协定一个密钥K。K可以是一个密钥对,但必须是加密密钥和解密密钥之间能相互推算出来的。在最简单也是最常用的对称算...

菲波那切数列算法

问题:有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知,一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起,每月生一对小兔子,加入一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖多少对?(兔子的规律为数列1,1,2,3,5,8,13,21)----菲波那切数...
代码星球 代码星球·2020-04-06

聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut

原文请戳:http://blog.csdn.net/abcjennifer/article/details/8170687聚类算法是ML中一个重要分支,一般采用unsupervisedlearning进行学习,本文根据常见聚类算法分类讲解K-Means,K-Medoids,GMM,Spectralclustering,...

算法的基本概念

1.什么是算法  解决特定问题的步骤就是算法2.算法的5个特性  有穷性、确定性、可行性、输入、输出3.算法的评价  分为时间复杂度(消耗的时间)、空间复杂度(消耗的空间)4.时间复杂度  用T(n)来表示时间复杂度。  一般有3种情况:Tmax、Tmin、Tavg ,如果没有特别提及,一般看作Tmax&nb...
代码星球 代码星球·2020-04-06
首页上一页...110111112113114...下一页尾页