只能对有序排列数据进行高效查找。
定义下标:头l,尾r,中位数mid。
集合(set)作为存储数据容器时: 它不允许存储相同元素,只能保留一份。 能快速帮助我们进行去重操作,过滤掉重复元素。
集合(set)作为存储数据容器时:
词汇量统计 统计一篇英文文章的总单词数,使用集合进行去重,判断英文文章难度。
词汇量统计
统计一篇英文文章的总单词数,使用集合进行去重,判断英文文章难度。
void Enqueue(T t);//入队 T Dequeue();//出队 T Peek();//查看队首元素 int Count { get; }//查看元素个数 bool IsEmpty { get; }//查看队列是否为空
void Enqueue(T t);//入队
T Dequeue();//出队
T Peek();//查看队首元素
int Count { get; }//查看元素个数
bool IsEmpty { get; }//查看队列是否为空
执行每条语句的耗时
执行每条语句的频率
前者主要取决于计算机性能、编译器、操作系统;
后者主要取决于程序本身和输入。
链表由若干节点构成,节点之间有链接,链接末尾没有节点,指向空null.
链表的实现需要定义:
namespace AlgorithmTest06_List{ interface IListDS<T> { int GetLength();//求长度 void Chear();//清空 bool IsEmpty();//判断线性表是否为空 T Add(T item);//添加 void Insert(int index, T item);//插入 T Delete(int i);//删除 T this[int i] { get; }//定义索引器 获取元素 T GetElem(int i);//取表元 T Set(int i, T item);//修改 int IndexOf(T value);//按值查找 void Remove(T value);//根据值删除 }}
栈中元素是从上到下加入的,即“后进先出”
十进制转二进制
打印结果:
有一只大兔子,一个月生一只小兔子,过一个月小兔子变大兔子。以此求第几个月,有几个大兔子。
namespace AlgorithmTest{ class Program { static void Main(string[] args) { //费波拉契数列,一个数等于前两个数之和。 //根据输入数,展示到这个数之前的所有数。 Console.WriteLine("请输入一个0~21之间的数"); int i = int.Parse(Console.ReadLine()); int[] array = new int[20];//定义有20个空的数组 array[0] = 1; array[1] = 1; if (i == 1) { Console.WriteLine(array[0]); } else if (i == 2) { Console.WriteLine(array[0]); Console.WriteLine(array[1]); } else if (i >= 3 && i < 21) { Console.WriteLine(array[0]); Console.WriteLine(array[1]); for (int j = 3; j <= i; j++) { array[j - 1] = array[j - 2] + array[j - 3]; Console.WriteLine(array[j - 1]); } } else { Console.WriteLine("数字超过范围"); } Console.ReadKey(); } }}
打印结果:
最近打算恶补数据结构,在学校的时候对数据结构与算法一直是一知半解,懵懵懂懂的样子。特开此贴记录一下过程,希望能有所收获。打算看过c#基本的数据结构之后,各种类型算法题多刷刷。