随笔分类 - 11 数据结构/算法
摘要:/// <summary> /// 约瑟夫环问题算法 /// </summary> /// <param name="total">总人数</param> /// <param name="start">开始报数的人</param> /// <param name="alter">要出列的人</pa
阅读全文
摘要:C#实现斐波拉切数列求和 private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear();//清空ListBox控件 int p = 0, n = 0, a = 1, b = 1;//定义变量 try {
阅读全文
摘要:百钱白鸡的算法实现 private void button1_Click(object sender, EventArgs e) { int a = 0, b = 0, c = 0, p = 0;//定义变量 for (a = 1; a <= 19; a++)//公鸡的百元中的遍历 { for (b
阅读全文
摘要:ddd /// <summary> /// 遍历,线索化等操作的接口 /// </summary> interface ITravelBinTree { void PreOrderTravel(); void InOrderTravel(); void RevOrderTravel(); void
阅读全文
摘要:类数据 public class Objects { private int number; /**//* 货物编号 */ private string name; /**//* 货物名称 */ private int counter; /**//* 货物数量 */ //构造函数 public Ob
阅读全文
摘要:节点 public class ListNode { public ListNode(int NewValue) { Value = NewValue; } //前一个 public ListNode Previous; // 后一个 public ListNode Next; // 值 publi
阅读全文
摘要:归并排序,是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。该算法是采用分治法。 原理: 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 2.设定两个指针,最初位置分别为两个已经排序序列的起始位置 3
阅读全文
摘要:希尔排序是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),它是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止 原理:按增量分组,组内排好序,在逐渐
阅读全文
摘要:插值查找,有序表的一种查找方式。插值查找是根据查找关键字与查找表中最大最小记录关键字比较后的查找方法。插值查找基于二分查找,将查找点的选择改进为自适应选择,提高查找效率。 原理: (midIndex-lowIndex) /(highIndex-lowIndx) 的比值 ≈≈(value-a[low]
阅读全文
摘要:快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 原理: 1.从数列中挑出一个
阅读全文
摘要:插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。 原理: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步
阅读全文
摘要:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 原理:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较, 1. 如果x=a[n/2]则找到x,算法终止; 2. 如 果x<a
阅读全文
摘要:选择排序法 ,是在要排序的一组数中,选出最小(或最大)的一个数与第一个位置的数交换;在剩下的数当中找最小的与第二个位置的数交换,即顺序放在已排好序的数列的最后,如此循环,直到全部数据元素排完为止。 原理:1. 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置, 2. 再从
阅读全文
摘要:本文用控制台程序展示数据排序前后的变化,本文数据都按将从小到大进行排序。 1. 准备arr数据 及 arr数据的展示 /// <summary> /// 生成n个元素的int数组 /// </summary> /// <param name="n"></param> /// <param name=
阅读全文
摘要:以下内容是根据 https://www.cnblogs.com/fivestudy/p/10212306.html 进行改写 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法简介 排序算法可以分为内部排序和外部排序。 内部排序是数据记录在内存中进行排序。 而外部排序是因排序的数据很大,一次
阅读全文