算法
文章平均质量分 65
昵称都有了
这个作者很懒,什么都没留下…
展开
-
C# 快速排序
在Sort方法中,首先判断low是否小于high,如果是,则调用Partition方法将数组分为两部分,然后递归调用Sort方法对两部分进行排序。在Partition方法中,首先选取数组最后一个元素作为基准元素pivot,然后遍历数组,将小于pivot的元素与i位置的元素交换,最后将pivot与i+1位置的元素交换,返回i+1作为新的基准元素位置。快速排序是通过选择一个元素作为基准值,将数组分为两部分,一部分小于基准值,一部分大于基准值,然后对这两部分进行递归排序,最终得到有序的数组。原创 2024-01-25 17:47:02 · 442 阅读 · 0 评论 -
C# 二分搜索(Binary Search)
在埃及,大约在公元1世纪,亚历山大的希罗提米斯(Hero of Alexandria)使用二分法来求解方程和近似计算根号数的值。在中国,二分搜索法的原始形式被称为"二分查找",最早出现在公元3世纪的《张邱建算经》中。,数组的最大值下标是9,第一次,9 / 2 = 4,判断arr [4]为10,明显10<12,说明数据在右半段。需要注意的是,二分搜索要求数据集必须是有序的,否则无法正确进行查找。在游戏中的查找操作:例如在一副扑克牌中查找某张牌的位置,或在地图中查找某个地点的坐标等。原创 2024-01-25 16:35:44 · 586 阅读 · 0 评论 -
C# 求幂算法,最大公约数,最小公倍数
时间计算:在日常生活中,经常需要计算多个时间段的最小公倍数,比如计算两个人的出发时间,或者计算多个任务的最小完成时间等。周期性事件:某些事件可能会以不同的频率发生,需要计算多个事件周期的最小公倍数,以便找到它们下一次同时发生的时间点。数学问题求解:在一些数学问题中,需要计算多个数的最小公倍数,比如求解最小公倍数与最大公约数问题、解线性方程等。分解质因数:分解一个整数的质因数时,可以通过不断地除以最小的质数,然后再次求最小公约数,直到无法再分解为止。原创 2024-02-01 18:28:38 · 803 阅读 · 0 评论 -
C# 递归执行顺序
为了方便进一步理解递归,写了一个数字输出。原创 2024-01-31 14:38:59 · 533 阅读 · 0 评论 -
C# 插入排序
需要注意的是,对于大规模数据的排序,插入排序的效率较低,因为它的时间复杂度为O(n^2),而其他高效的排序算法(如快速排序、归并排序、堆排序)具有更低的时间复杂度。小规模数据排序:插入排序在小规模数据(例如10个以下)的排序中表现良好,由于其简单直观的实现和较低的时间复杂度常数,插入排序在这种情况下往往比其他更复杂的排序算法(如快速排序或归并排序)更快。是一种简单直观的排序算法,它的基本思想是将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,插入到已排序部分的正确位置。原创 2024-01-19 16:58:30 · 438 阅读 · 0 评论 -
C# 冒泡排序
冒泡排序是稳定的,即相等元素的相对顺序在排序前后保持不变。在比较相邻元素时,只有前一个元素大于后一个元素时才会交换它们的位置,所以相等元素不会发生位置交换。冒泡排序是一种简单的排序算法,它重复地遍历待排序的元素,比较相邻两个元素的大小,并按照规定的顺序交换它们,直到整个序列排序完成。冒泡排序的时间复杂度为O(n^2),其中n是待排序序列的长度。原创 2024-01-17 18:45:58 · 356 阅读 · 0 评论 -
C# 选择排序
当待排序的序列中存在相等的元素时,选择排序可能会改变相等元素的相对顺序。具体来说,选择排序每次选择最小(或最大)的元素,并将其与当前位置的元素进行交换,这就可能导致相等元素的相对顺序发生改变。选择排序适用于数据量较小的情况,因为其时间复杂度为O(n^2),其中n是待排序元素的个数。相对于其他复杂度较低的排序算法(如快速排序、归并排序),选择排序的效率较低,因此在大规模数据的排序中不推荐使用。选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的元素中选择最小(或最大)的元素,放到已排序的序列的末尾。原创 2024-01-18 11:29:40 · 376 阅读 · 0 评论 -
C#字符串匹配(模式搜索)BF(Brute Force)暴力算法
暴力算法(Brute Force Algorithm)是一种简单直接的解决问题的方法,它通过穷举所有可能的解决方案来寻找问题的解。暴力算法通常是基于穷举搜索的思想,遍历所有可能的情况,然后逐一检查每种情况是否满足问题的要求。由于其简单直接的特点,暴力算法易于实现和理解,适用于解决一些简单的问题。然而,随着问题规模的增加,暴力算法的时间复杂度会呈指数级增长,效率较低。因此,在处理大规模问题时,通常需要采用其他更高效的算法。暴力算法的应用背景通常是在问题规模较小、时间复杂度要求不高的情况下。原创 2024-02-02 17:39:42 · 496 阅读 · 0 评论 -
C# 常用的排序方法
KMP 算法(Knuth-Morris-Pratt Algorithm)最大公约数算法(Greatest Common Divisor)最短路径算法(Shortest Path Algorithm)最小公倍数算法(Least Common Multiple)插入排序(Insertion Sort)选择排序(Selection Sort)二分搜索(Binary Search)冒泡排序(Bubble Sort)快速排序(Quick Sort)归并排序(Merge Sort)堆排序(Heap Sort)原创 2024-01-17 18:38:25 · 432 阅读 · 0 评论