算法
铁桶小分队
这个作者很懒,什么都没留下…
展开
-
【转载】经典中的经典算法:动态规划(详细解释,从入门到实践,逐步讲解)
非原创,转载自:(https://blog.csdn.net/ailaojie/article/details/83014821) 动态规划的重要性就不多说,直接进入正题 首先,我们看一下官方定义: 定义: 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以...转载 2022-02-10 15:55:05 · 227 阅读 · 0 评论 -
编程实现打印出26个字母的所有子集
一看到这道题可能没有什么思路,那么先从字母比较少数 的情况开始观察:假设只有A B C三个字母,那么他们的所有子集是什么? {A},{B},{C},{A,B},{A,C},{B,C},{A,B,C},空集根据上面的列举我们可以画出下面的表: A B C 1 0 0 0原创 2016-07-16 11:51:33 · 2783 阅读 · 0 评论 -
用哈希表判断两个单链表是否相交的问题
判断两个单链表是否相交,一般有下面几种方法: 1.遍历第一个链表,记录每次获得的节点地址,然后遍历第二个链表,看记录的节点地址是否存在第二个链表中,这种方法的时间复杂度为O(n^2)。2.对第一个链表的每个节点地址构造哈希表,然后遍历第二个链表,查找当前节点是否存在哈希表中,此方式的时间复杂度为O(len1+len2)。3.将其中一个链表首尾相接,遍历另一个链表,如果能达到首尾相接链表的头,说明两原创 2016-06-16 20:26:23 · 1636 阅读 · 0 评论 -
排序算法--插入排序之直接插入排序
直接插入排序的核心思想是把一个记录插入一个有序序列中,每插入一个记录就得到一个新的有序序列,直到所有记录都插入成功,得到有序序列。每次插入记录时的有序序列如何得到,关键在第一次,第一次要插入的记录时序列的第二个值,有序序列只有一个值,就是第一个记录。代码:#include <string.h>#include <malloc.h>#include <iostream>using namespac原创 2016-12-09 15:46:48 · 432 阅读 · 0 评论 -
排序算法--插入排序之希尔排序
希尔排序是对直接插入排序算法的改进,把整个序列分割为若干子序列,对每个子序列进行直接插入排序,最后对整个序列进行直接插入排序(因为经过前面的子序列排序,整个序列基本有序,最后进行一次直接插入排序效率会比一开始就做排序高)。如果掌握了直接插入排序,那么希尔排序也比较容易理解了。就是划分好子序列后,直接复用直接插入排序的代码。代码:#include <string.h>#include <malloc原创 2016-12-09 16:15:18 · 414 阅读 · 0 评论 -
排序算法--选择排序之简单选择排序
在待排序记录中,选择一个最小的数,和第一个记录交换位置,在剩下n-1个的记录中选择最小的和第二个记录交换,依次类推,最终可以得到一个有序的序列。代码:#include <string.h>#include <malloc.h>#include <iostream>using namespace std;void printArray(int a[], int n){ for(int j=原创 2016-12-09 16:25:01 · 635 阅读 · 0 评论 -
找出给定字符串中第一个不重复的字符
给定一串字符串,找出其中第一个不重复的字符。 如:输入”abcddcaeb1~soop”,输出’e’方法一思路:定义一个list<char> recd,对输入字符串str进行遍历,分别查找每个字符是否出现在recd中,如果存在,则把recd中的该字符删除,如果不存在,则将该字符放进recd中。即用recd存放字符串中只出现了一次的字符。那么当遍历完str后,recd的第一个元素就是我们要找的字符,原创 2016-07-26 20:10:37 · 7154 阅读 · 0 评论