
C#
文章平均质量分 62
用C#写一下数据结构和算法,纯当练习
Kerven_HKW
认真写好每一行代码
展开
-
0.专栏首页
1.C#的数据结构杂谈2.C#写算法之分析时间复杂度&空间复杂度3.C#写算法之数组的基本操作4.C#写算法之找出数组中重复的数字5.C#写算法之链表的基本操作6.C#写算法之栈的基本操作7.C#写算法之队列的基本操作8.C#写算法之散列表9.C#写算法之二叉树10.C#写算法之二叉堆11.C#写算法之优先队列12.C#写算法之排序算法13....原创 2020-01-21 10:50:30 · 1390 阅读 · 0 评论 -
C#面向对象(OOPs)中的多态性
面向对象编程中的多态性包括编译时和运行时行为。编译时多态性涉及方法和运算符重载,允许基于参数和运算符的多种行为。通过方法重写实现的运行时多态性使子类能够提供自己的超类方法实现。其他形式包括具有泛型的参数多态性、通过方法覆盖和接口的子类型多态性,以及用于隐式类型转换的强制多态性。这些概念有助于提高软件开发中的代码灵活性、可重用性和适应性。原创 2024-03-08 20:30:44 · 1086 阅读 · 0 评论 -
OOPs是什么?
OOPs在编程中代表面向对象编程(Object-Oriented Programming)。面向对象编程是一种编程范式,它将数据和操作封装在对象中,通过对象之间的交互来实现程序的功能。面向对象编程的优点包括代码重用性、可维护性、灵活性和扩展性等,使得程序更易于理解和设计。许多现代编程语言(如Java、C++、C#等)都支持面向对象编程范式,因此掌握面向对象编程的概念和实践是编程中的重要技能之一。原创 2024-03-08 20:27:02 · 366 阅读 · 0 评论 -
使用IEEE754标准转换过程
IEEE 754标准是一种用于浮点数表示和计算的标准。对于给定的浮点数,IEEE 754标准定义了如何表示它以及如何执行基本的算术运算。原创 2024-01-19 17:54:59 · 925 阅读 · 0 评论 -
C#开发轻松入门--笔记
第1章1-1 .NET简介 (02:11) 1-2 Visual Studio简介及安装 (03:23) 1-3 创建C#控制台程序 (04:14) 1-4 练习题 1-5 程序界面各部分介绍 (03:01) 1-6 第一个C#程序---HelloWorld (06:11) 1-7 练习题第2章 C#语法基础2-1 C#中的关键字 2-2 C#的注释 ...原创 2017-04-11 15:15:00 · 945 阅读 · 0 评论 -
0.专栏首页
1.C#操作MongoDB2.C#写算法之分析时间复杂度&空间复杂度3.C#写算法之数组的基本操作4.C#写算法之找出数组中重复的数字5.C#写算法之链表的基本操作6.C#写算法之栈的基本操作7.C#写算法之队列的基本操作8.C#写算法之散列表9.C#写算法之二叉树10.C#写算法之二叉堆11.C#写算法之优先队列12.C#写算法之排序算法13.C#写算法之冒泡排序14.C#写算法之快速排序15.C#写算法之用字符串实现两个超大整数相加16.C#写算法之二分查找17.C#写算法之什么是 “哈夫曼树” ?原创 2022-07-11 10:45:35 · 1078 阅读 · 0 评论 -
C#-多线程与异步操作
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决...原创 2021-06-30 22:30:01 · 1343 阅读 · 0 评论 -
C#依赖注入简单代码举例
C#依赖注入简单代码举例:没有讲解,知识自己简单实现:using System;namespace Inject{ interface ISay{ void Say(); void Eat(int num); } class CSay : ISay { public void Eat(int num) { Console.WriteLine("CEat" + num);原创 2021-04-02 11:07:16 · 1545 阅读 · 0 评论 -
22.C#写算法之A*寻路算法的实现
AStarSearch每一个格子具有F、G、H这3个属性,如下图:G:从起点走到当前格子的成本,也就是已经花费了多少步。H:在不考虑障碍的情况下,从当前格子走到目标格子的距离,也就是离目标还有多远。F:G和H的综合评估,也就是从起点到达当前格子,再从当前格子到达目标格子的总步数。A星寻路算法代码如下:using System;using System.Collections.Generic;namespace Test01{ class Grid {原创 2020-08-09 16:00:38 · 1740 阅读 · 2 评论 -
21.C#写算法之LRU算法的实现
LRU 全称 Least Recently Used,最近最少使用。原创 2020-08-06 00:16:39 · 1736 阅读 · 0 评论 -
20.C#写算法之什么是红黑树
漫画:什么是红黑树?https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653204198&idx=1&sn=c8fd0281a182d763205dbb6fd19bba78&chksm=8c99dc3cbbee552a4ebb2941a624571bc573f071ea0ac9346ee32e29e28825bfd43b29320e7f&scene=21#wechat_redirect漫画:什么是红黑原创 2020-05-19 14:58:32 · 1261 阅读 · 0 评论 -
19.C#写算法之“抢红包”算法
红包功能需要满足的基本条件:1.所有人抢到的金额之和要等于红包金额,不能多也不能少。2.每个人至少抢到1分钱。3.要保证红包拆分的金额尽可能分布均衡,不要出现两极分化太严重的情况。为了避免出现高并发引起的一些问题,每个人领取红包的金额不能在领的时候才计算,必须先计算好每个红包拆出的金额,并把它们放在一个队列里,领取红包的用户要在队列中找到属于自己的那一份。这里拆分红包有很多种方...原创 2020-04-23 18:23:11 · 1998 阅读 · 0 评论 -
18.C#写算法之“哈夫曼编码” 是什么鬼?
文章参考自:程序员小灰:漫画:“哈夫曼编码” 是什么鬼?哈夫曼编码是一种高效的编码方式,在信息存储和传输过程中,用于对信息进行压缩。计算机系统是如何存储信息的呢?计算机不是人,它不认识中文和英文,更不认识图片和视频,它唯一“认识”的就是0(低电平)和1(高电平)。因此,我们在计算机上看到的一切文字、图像、音频、视频,底层都是用二进制来存储和传输的。从狭义上来讲,把人类能看懂的各...原创 2020-04-21 14:18:11 · 1819 阅读 · 0 评论 -
17.C#写算法之什么是 “哈夫曼树” ?(最优二叉树)
文章参考自: 程序员小灰:漫画:什么是 “哈夫曼树” ?在介绍哈夫曼树前,我们先来弄清楚和树有关的四个概念:概念1:什么是路径?在一棵树中,从一个结点到另一个结点所经过的所有结点,被我们称为两个结点之间的路径。上面的二叉树当中,从根结点A到叶子结点H的路径,就是A,B,D,H概念2:什么是路径长度?在一棵树中,从一个结点到另一个结点所经过的“边”的数量,被我们称为两个结...原创 2020-04-20 13:54:46 · 1317 阅读 · 1 评论 -
C#写算法之二分查找
C#写算法之二分查找原创 2020-03-30 10:35:19 · 1261 阅读 · 0 评论 -
C#写算法之用字符串实现两个超大整数相加
JAVA版的见:https://blog.youkuaiyun.com/qq_34035956/article/details/104474513用字符串实现两个超大整数相加:直接上代码:using System;using System.Linq;using System.Text;namespace CSharpTest01{ class Program { ...原创 2020-03-27 18:24:47 · 2099 阅读 · 1 评论 -
C#写算法之快速排序
快速排序是从冒泡排序演变而来,快速排序之所以快,是因为使用了分治法。同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。快速排序是在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列的一边,比它晓得元素移动到数列的另一边,从而把数列拆解成两个部分。在分治法的思想下,原数列在每一轮都被拆分成两部分,每一部分在下一轮又分别被拆分成两部分,直到不可再...原创 2020-01-20 21:06:47 · 1932 阅读 · 0 评论 -
C#写算法之冒泡排序
bubble sort ,一种基础的交换排序。思想:相邻元素两两比较,当一个元素大于右侧相邻元素时,交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变。using System;namespace CSharpTest01{ class Program { /// <summary> /// 冒泡排序 ...原创 2020-01-20 16:16:40 · 1723 阅读 · 0 评论 -
C#写算法之排序算法
根据时间复杂度的不同,主流的排序算法可以分为3大类。1.时间复杂度为O(n^2)的排序算法 冒泡排序、选择排序、插入排序 希尔排序(希尔排序比较特殊,它的性能略优于O(n^2),但又比不上O(nlogn))2.时间复杂度为O(nlogn)的排序算法 快速排序、归并排序、堆排序3.时间复杂度为线性的排序算法 计数排序、桶排序、基数排序排序还根据...原创 2020-01-20 15:17:53 · 1208 阅读 · 0 评论 -
C#写算法之优先队列
优先队列不再遵循先入先出的原则,分为两种情况:1.最大优先队列,无论入队顺序如何,都是当前最大的元素优先出队;2.最小优先队列,无论入队顺序如何,都是当前最小的元素优先出队;优先队列的实现:二叉堆的特性: 1.最大堆堆顶是整个堆中的最大元素; 2.最小堆的堆顶是整个堆中最小的元素。因此可以用最大堆实现最大优先队列,每一次入队就是堆的插入操作,出队就是删除...原创 2020-01-20 14:23:54 · 2140 阅读 · 0 评论 -
C#写算法之二叉堆
二叉堆本质上是一种完全二叉树,分为两个类型:1.最大堆2.最小堆最大堆的任意一个父节点的值,都大于或等于它左右孩子节点的值。最小堆的任意一个父节点的值,都小于或等于它左右孩子节点的值。二叉堆的根节点叫作堆顶。最大堆的堆顶是整个堆中最大元素;最小堆的堆顶是这个堆中最小元素。二叉堆的自我调整:把一个不符合堆性质的完全二叉树,调整为一个堆。1.插入节点;2.删除节点;...原创 2020-01-20 10:46:31 · 1523 阅读 · 0 评论 -
C#写算法之二叉树
在数据结构中,树的定义如下:树(tree)是n(n>=0)个节点的有限集,当n=0时,称为空树。在任意一个非空树中,有如下特点:1.有且仅有一个特定的称为根的节点。2.当n>1时,其余节点可分为m(m>0)个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。树有以下概念:根节点、父节点、兄弟节点、孩子节点。树的最大层级数,被称为树的高度或深度。...原创 2020-01-19 18:42:46 · 8867 阅读 · 5 评论 -
C#写算法之散列表(哈希表)
散列表也叫哈希表(hash table),这种数据结构提供了键(Key)和值(Value)的映射关系。只要给出一个Key,就可以高效地查找到它所匹配的Value,时间复杂度接近于O(1)。哈希表之所以查询效率这么高,是因为有一个中转站:本质上,哈希表也是一个数组,但数组是通过下标访问值,所以,输入的key可以从一个中转站中,通过某种方式,把Key和数组下标进行转换。这个中转站就叫作哈希...原创 2020-01-18 23:46:42 · 2032 阅读 · 0 评论 -
C#写算法之队列的基本操作
用数组来实现队列的一种比较好的方式是循环队列。循环队列要注意的是队头和队尾的下标:计算方式:1.新的队头下标:front = (front+1)%array.Length2.新的队尾下标:rear = (rear+1)%array.Length3.(队尾下标+1)%数组长度 = 队头下标 时为队列满了用数组实现循环队列的代码:using System;names...原创 2020-01-18 18:00:07 · 1753 阅读 · 0 评论 -
C#写算法之栈的基本操作
栈是一种线性的逻辑结构,可依赖数组和链表这两种物理结构实现。栈包含入栈、出栈的操作,是一种FILO的结构。用数据实现的栈代码如下:using System;namespace Test01{ public class MyStack { public int size = 0; int[] stack; ...原创 2020-01-18 17:12:13 · 1760 阅读 · 0 评论 -
C#写算法之链表的基本操作
链表 查找元素的时间复杂度是O(n),但是,更新、插入、删除的时间复杂度都是O(1)。对于需要频繁插入和删除元素的场景,用链表更为合适。单链表实现--代码:using System;namespace Test01{ public class Node { public int data; public Node next; ...原创 2020-01-18 16:23:28 · 1841 阅读 · 0 评论 -
C#写算法之找出数组中重复的数字
找出数组中重复的数字解1:时间复杂度O(n),空间复杂度O(n)的解法using System;using System.Collections;using System.Collections.Generic;namespace CSharpTest01{ class Program { // 找出数组中重复的数字 static...原创 2020-01-16 18:33:25 · 5451 阅读 · 1 评论 -
C#写算法之分析时间复杂度&空间复杂度
原文:《分析时间复杂度&空间复杂度,以二分查找和斐波那契数的递归和非递归算法为例》https://blog.youkuaiyun.com/w_y_x_y/article/details/78733667————————————————————————————————————————————————一、时间复杂度:实际是指程序运行次数,而不是程序运行时间1.我们一般讨论的是最坏时间复杂度...原创 2020-01-16 15:17:54 · 1835 阅读 · 0 评论 -
C#写算法之数组的基本操作
using System;namespace CSharpTest01{ // 自定义数组类 class MyArray<T> { public int Size { get { return size; } } private T[] array; private int size; pu...原创 2020-01-16 15:04:07 · 1409 阅读 · 1 评论