算法
makabaka12138
这个作者很懒,什么都没留下…
展开
-
桶排序------排序
桶排序原创 2022-06-12 10:49:15 · 49 阅读 · 0 评论 -
汉诺塔------递归实现(C++)
汉诺塔的递归实现原创 2022-06-09 15:18:02 · 86 阅读 · 0 评论 -
高精度乘以高精度------C
高精度乘以高精度吗,和高精度乘以单精度差不多,先这样,在这样,然后这样就好啦,过程如下图所示。 简单描述一下,就是类似高精度乘以单精度,先按位乘,然后进位就行了。原创 2022-06-05 19:09:51 · 236 阅读 · 0 评论 -
高精度乘以单精度------C++
实现高精度乘以单精度,就是很简单的啦,会一个数学计算方法就行了。就像上面的图所示:数组的每一位乘以都乘以单精度,这里的单精度只是用基础数据类型可以存储的数据,比如int,long long啦,然后进位就行了。这个是要比高精度加法减法简单一点的感觉。大家用心体会。代码敲多了,不禁就喜欢感慨万千!一、人生如天气,可预料,但往往出乎意料。不管是阳光灿烂,还是聚散无常,一份好心情,是人生唯一不能被剥夺的财富。把握好每天的生活,照顾好独一无二的身体,就是最好的珍惜。二、人生中,你要知是非以不辩为解脱,烦恼以忍原创 2022-06-04 19:34:00 · 1229 阅读 · 0 评论 -
高精度乘单精度------C
实现高精度乘以单精度,就是很简单的啦,会一个数学计算方法就行了。就像上面的图所示:数组的每一位乘以都乘以单精度,这里的单精度只是用基础数据类型可以存储的数据,比如int,long long啦。...原创 2022-06-04 19:30:43 · 183 阅读 · 0 评论 -
高精度减法------c++
高精度减法:第一步:判断正负,如果s1比s2对应的整数小,结果为负,交换s1第二步:将两个字符串,逆序存入2个整数输出测试第三步:从左至右,逐位相减,不够借位第四步:从右向左,逆序输出上代码:......原创 2022-06-04 16:17:38 · 96 阅读 · 0 评论 -
高精度减法------C
高精度减法:第一步:判断正负,如果s1比s2对应的整数小,结果为负,交换s1第二步:将两个字符串,逆序存入2个整数输出测试第三步:从左至右,逐位相减,不够借位第四步:从右向左,逆序输出天天提示文章质量不佳怎么办?当然是水字数啦,烦死了这个csdn上代码:...原创 2022-06-04 15:57:40 · 89 阅读 · 0 评论 -
高精度加法------C++
在编程题里有这么一种类型的题目,大数运算,大数有多大呢?特别大,特别大,超过了基本类型的范围,高精度肯定也有四则运算吗,这里主要讲加法,减法乘法除法,后续在讲,喜欢的的记得点个关注哦,这里就介绍高精度加法的解决过程。人类进行加法运算的时候,会对齐位置,个位对个位,十位对十位,可是计算机输入时,如果长度不一致,是不会对齐的,比如这样就不能个位对个位,十位对十位进行相加了,那该怎么办呢?这个时候,我们就可以把字符串逆序过来啊,对不对。比如像这样把逆序的加和得到的答案,再逆序,不就是正确答案了?那么做原创 2022-06-03 22:34:52 · 114 阅读 · 0 评论 -
高精度加法------(C语言)
在编程题里有这么一种类型的题目,大数运算,大数有多大呢?特别大,特别大,超过了基本类型的范围,高精度肯定也有四则运算吗,这里主要讲加法,减法乘法除法,后续在讲,喜欢的的记得点个关注哦,这里就介绍高精度加法的解决过程。人类进行加法运算的时候,会对齐位置,个位对个位,十位对十位,可是计算机输入时,如果长度不一致,是不会对齐的,比如这样就不能个位对个位,十位对十位进行相加了,那该怎么办呢?这个时候,我们就可以把字符串逆序过来啊,对不对。比如像这样把逆序的加和得到的答案,再逆序,不就是正确答案了?那么做原创 2022-06-03 22:21:06 · 1175 阅读 · 0 评论 -
递归------递归的简单应用
递归,那什么是递归呢?就是把乌龟递给别人,就叫递归(龟)。开个小玩笑哈。让我们看看百度百科的解释:程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递原创 2022-05-15 10:29:26 · 147 阅读 · 0 评论 -
递归打印全排列
原理解释:用递归求全排列的思路,设定数字为{5,8,2}1.让第一个数不同,得到三个数列,其办法是把第一个数和后面的每个数交换5 8 2 //把第一个数和第一个交换8 5 2 //把第一个数和第二个交换2 8 5 //把第一个数和第三个交换以上三个数列,只要第一个数不同,不管后面的n-1个数是怎么排列的,这n个数列都不同。这是递归的第一层。2.继续:在上面的每个数列中去掉第一个数,对后面的剩下的数进行类似的排列...原创 2022-04-11 11:32:05 · 279 阅读 · 0 评论 -
归并排序------排序
什么是归并排序呢?来看看百度百科的解释归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。那这是什么意思呢?看下图就是先划分,然后再合并排序。很简单吧#include <stdio.h>#include <stdlib.h>void print_a.原创 2022-05-11 11:31:08 · 83 阅读 · 0 评论 -
希尔排序------排序
大体思想:先把数据分组,按组先排几遍,然后最后一次进行插入排序举例:以三个为一组3 4 8 6 9 5 2 6 1 7那就3 4 8为一组,6 9 5为一组,2 6 1为一组,7为一组。先把每组的第一个元素进行排序变成第一组:2 4 8,第二组:3 9 5,第三组:6 6 1,第四组:7然后把每组的的第二个元素排序:第一组...原创 2022-05-07 10:18:55 · 321 阅读 · 1 评论 -
快速排序(基于递归)-------排序
什么是快速排序,让我们看看百度百科的介绍:快速排序(Quicksort),计算机科学词汇,适用领域Pascal,c++等语言,是对冒泡排序算法的一种改进。快速排序的步骤:排序演示假设一开始序列{xi}是:5,3,7,6,4,1,0,2,9,10,8。此时,ref=5,i=1,j=11,从后往前找,第一个比5小的数是x8=2,因此序列为:2,3,7,6,4,1,0,5,9,10,8。此时i=1,j=8,从前往后找,第一个比5大的数是x3=7,因此序列为:2,3,5,6,4,1,0,原创 2022-05-05 15:58:48 · 669 阅读 · 0 评论 -
插入排序------排序
什么是插入排序呢?让我们看看百度百科的解释。插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。简单概括一下,就是将数据插入到已经排序好的数组。举个例子简单说明一下,8 1 5 9,按升序来排吧。第一个元素自然成序。.原创 2022-05-04 11:14:05 · 119 阅读 · 0 评论 -
选择排序------排序
选择排序的原理就是上图表示的内容。老样子,我们还是举个例子:1 3 5 8首先遍历元素,找到最大或者最小的元素,这里我选择最小的元素1,然后放到数组的一侧,可以放到左侧,也可以放到右侧,这里我放到右侧。然后数组变成8 3 51,然后继续遍历,继续找到最小的元素3,然后放到右侧最小元素的前一个位置,此时变成8 5 3 1,此时就排序完成了。原理很简单。上代码。同样的,你也可以在中间加个判断,如果已经排好序了,就可以停止了。代码为了照顾新手,就不那么复杂了,大家可以自己优化一下代码。代码实现:...原创 2022-05-03 09:14:43 · 116 阅读 · 0 评论 -
冒泡排序------C语言实现
今天讲冒泡排序。冒泡排序还是很简单的。冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。时间复杂度为:O(n^2)这个呢是演示动画。举.原创 2022-05-02 09:10:43 · 128 阅读 · 0 评论 -
BF(Brute-Force)算法------C语言实现
目的:确定字串第一次在主串中出现的位置思想:主串从头开始,与字串进行比较,若字母匹配,主串下标自增一位,字串长度也下标一位,继续比较,若不相同,主串下标自增一位,字串从头开始,继续主串当前下标字母进行比较。例子:4主串:ABCDCAD字串:CAD子串首位C与主串A比,不同,主串下标+1变成B,字串回到起点C。子串首位C与主串B比,不同,主串下标+1变成C,字串回到起点C。子串首位C与主串C比,相同,主串下标+1变成D,,字串下标+1变A,子串第二位A与主串D比,不同,主串下标回溯原创 2022-04-30 21:50:27 · 1538 阅读 · 0 评论 -
KMP算法------C语言实现
今天呢,要感谢一位小姐姐,她的笔记帮助我理解了KMP算法。那什么是KMP算法呢?KMP算法是在BF算法上进行了优化,KMP算法的初衷是为了消除重复的比较,提高效率。举个例子:从S串中找到与T串符合的,仔细观察发现,T串前四个都是a,然后从S串查找的时候,也发现了四个a的情况,这个时候,不同BF算法,BF算法会立刻回溯主指针。而KMP算法,在匹配过程中出现字符比较不等的时候,不回溯主指针,而是利用已得到的不匹配的结果,将字串滑动尽可能远的一部分距离,继续进行比较。用图给大家解释一下。用原创 2022-04-28 19:52:55 · 1234 阅读 · 2 评论 -
二分法查找
二分法是数学领域术语:在数学上。二分法即,对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。算法:当数据量很大适宜采用该方法,直到找到为止,时间复杂度:O(log(n))。注意:采用二分法查找时,数据需是排好序的。基本思想:二分查找算法也称折半搜索算法,对数搜索算法,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如原创 2022-04-24 21:20:19 · 1315 阅读 · 0 评论 -
qsort的使用方法
那么什么是qsort呢?qsort函数实现了一种快速排序算法,可以对num元素数组进行排序,每个元素的宽度为字节。参数base是指向要排序的数组的基的指针。qsort使用已排序的元素覆盖此数组。我们先看看qsort的官方文档说明void qsort(void *base,size_t num,size_t width,int (__cdecl *compare )(const void *, const void *));很明显昂,第一个参数是(void *base): start of原创 2022-04-23 11:03:42 · 450 阅读 · 0 评论 -
算法------BFS(搜索技术)
BFS(Breadth-First Search)是基本的暴力技术之一,常用于树,图的遍历问题。老鼠走迷宫就是一道经典的BFS,DFS的题目。在具体编程时,一般使用队列这种数据结构来具体实现BFS。下面用一道题目来介绍BFS。Problem - 1312这是题目网址。我英语不好,需要翻译一下:问题描述:有一间长方形的房间,上面铺着方形的瓷砖。每个瓷砖都是红色的或黑色的。一个男人站在一块黑色瓷砖上。从瓷砖上,他可以移动到四个中的一个。相邻的瓷砖。但他不能在红色瓷砖上移动,只原创 2022-04-20 15:12:43 · 914 阅读 · 0 评论