![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 62
yonglong8
这个作者很懒,什么都没留下…
展开
-
插入排序
1.需求:通过插入排序对一个无序的数组进行排序 2.思想:一个数组分为有序区和无序区,每次从无序区中选一个数插入到有序区中,插入后仍为一个有序区(在算法中for和while的选择:一般明确知道要循环多少次的时候用for,不知道时用while) 3.实现: public class InsSort { /// /// 待排序数组原创 2013-04-22 10:58:56 · 381 阅读 · 0 评论 -
堆排序
大家可以参考http://blog.csdn.net/morewindows/article/details/6709644,写的很详细 class HeapSort { public int[] arr { get; set; } //TODO创建堆 //调整堆 public void AdjustHeap(in原创 2013-05-14 20:54:04 · 332 阅读 · 0 评论 -
二叉树
1.基本概念: 二叉树是每个结点最多有两个子结点的树,二叉树不是树的特殊形式,他们的数据结构是不一样的。 二叉树有以下性质: 1)第i-1层最多有2的i-1次方个结点 2)深度为k的二叉树最多有2的k次方-1个结点,可以由第一个性质推出 3)若0度的结点为n0个,2度的结点为n2个,则有n0=n2+1 2.二叉树的链式存储结构,二叉链表 public class node { p原创 2013-05-02 22:05:17 · 377 阅读 · 0 评论 -
普通树的深度优先遍历和广度优先遍历
1.概念 普通树的遍历分为深度优先遍历和广度优先遍历,深度优先遍历是从跟结点开始,先访问结点的孩子结点,再访问结点的兄弟结点,分为先序遍历和后序遍历,广度优先遍历是先访问结点的兄弟结点,再访问结点的孩子结点,需要借助于队列。 2.实现代码 public class Tree { /// /// 深度优先 ///原创 2013-05-04 16:01:19 · 1049 阅读 · 0 评论 -
折半查找
1.概念 折半查找也叫二分查找,前提是待查找的数组必须是有序的,假设数组是从小到大排列的,先将待查找的值和有序数组的中间值比较,如果相等则找到,若小于中间值则查找左半部分,若大于中间值则查找右半部分。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 2.实现 /// /// 折半查找 /// public class原创 2013-05-03 11:10:50 · 440 阅读 · 0 评论 -
二分查找插入排序
1.概念: 先前有复习过插入排序,插入排序的时间复杂度是O(n2),,如果比较的代价远大于交换的代价,则可以使用二分查找插入排序,其时间复杂度也是O(n2),其比较次数比较少 2.实现步骤: 通过折半查找在数组的有序部分找到待插入值应插入的位置,再通过交换法将数据插入的位置。 3代码实现: public class BinaryInsectionSort {原创 2013-05-03 14:21:58 · 673 阅读 · 0 评论 -
快速排序
1.需求:将一个无序的数组按从小到大的顺序排列 2.思想:众所周知交换排序中的冒泡排序的一般时间复杂度为O(n2),今天复习交换排序中的另外一种排序算法:快速排序,选取一个基准值,将数组中大于这个基准值的放到基准值一边,小的放到另外一边,然后对两边数组进行同样的操作。一般时间复杂度为O(nlog2(n))这里需要用到递归(顺便复习一下递归的概念:一个方法调用自己叫做递归。什么时候可以用递归呢?1原创 2013-04-21 11:42:08 · 382 阅读 · 0 评论 -
c#冒泡排序
需求:将一个无序的数组按从小到大的顺序排列 思想:经过n-1趟比较,第i趟比较(i从0开始)n-i-1次,每次最大的数会排到最后,如果从下往上看就像体积最大的泡泡浮上来,所以叫做冒泡排序。冒泡排序是交换排序的一种 思路:依次比较相邻的两个数,小数放到前面大数放到后面。 实现: /// /// 冒泡排序 /// public class Sort原创 2013-04-19 12:37:17 · 605 阅读 · 0 评论 -
c#归并排序
1.需求:将一个数组通过归并排序排成有序数组 2.思想:归并排序是分治法的一个典型应用,将两个有序的序列合并成一个有序的序列称为归并,归并排序,通过将数组分成若干个有序的序列,当拆分成只有一个数时认为是有序的,然后将这些序列归并。这里需要用到递归。 3.实现: public class MSort { /// /// 待排序数组原创 2013-04-22 22:23:35 · 491 阅读 · 0 评论 -
选择排序
1.需求:将一个无序的数组排序 2.思想:选择排序和插入排序类似,也分为一个有序区和一个无序区,每次从无序区中选出最小的数插入到有序区的结尾处。 3.实现: public class SelSort { /// /// 待排序数组 /// public int[] arr { get; set; }原创 2013-04-22 11:26:00 · 335 阅读 · 0 评论 -
随机生成题目列表
首先获得原始的题目列表 定义为List originQuestionList = 赋值; 定义一个最终的随机题目列表 List finalQuestionList = new List(); 定义一个中间量用于记录已经选了哪些题目,这里用HashSet IDList = new HashSet(); 定义一个随机量 Random rd = new Random(); HashSet类有A原创 2013-08-21 13:54:55 · 3393 阅读 · 0 评论