数据结构与算法
百事可爱422
computer vision
展开
-
查找算法--二分查找 c++实现
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。//vs2017#include<iostream>using namespace std;#include<algorithm>int binarySearch(int a[], int n, int target){ int i = 0, j = n-1, mid = 0; while (i <= j原创 2022-03-03 13:39:23 · 1348 阅读 · 0 评论 -
手写快速排序 简单暴力 c++实现 源码
虽然可以自己用sort()函数实现,但是自己写一遍也有利于理解快排#include<iostream>using namespace std;void quicksort(int a[], int start, int end)//手写快排{ int i = start, j = end, temp, flag = a[i]; do { while (a[i] < flag)i++; while (a[j] > flag)j--; if (i <=原创 2022-03-21 21:02:54 · 885 阅读 · 0 评论 -
暴力法——猴子分桃-源代码 c语言实现
/*海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?(3121)思路设最开始桃子个数为x第一只猴子分到的桃子数为(x-1)/ 5,分完之后还剩x1 =(x-1)- (x-1)/ 5 = (4/5)*(x-1)第二只猴子分到的桃子数为(x1-1)/ 5,分完之后还剩x原创 2022-03-18 11:04:40 · 1523 阅读 · 0 评论 -
田忌赛马 c++ 源代码
自己独立写出来的 有点意思 就赛出来了#include<iostream>using namespace std;/*题:田忌和齐威王赛马,齐威王每次用速度最快的马,求田忌怎么选马贪心法比他们的速度*/int main(){ int a[100] = { 36,35,34,30,29,20,15,12,9,8,6 };//齐威王马速 int b[100] = { 33,32,25,23,18,17,16,14,10,7,5 };//田忌马速 int n = 11,m=原创 2022-03-09 18:17:20 · 2336 阅读 · 0 评论 -
求等长升序组合序列的中位数 C++ 三行代码解决
三行代码解决原创 2022-03-04 20:32:30 · 370 阅读 · 0 评论 -
排序算法——先按先奇后偶再按从小到大排序
问题:有一组数据,排序规则是:要求按照奇数在前,偶数在后,然后在按照大小顺序排序算法思想:法一:可以先把奇数和偶数分开,再用sort()排序,然后再合并输出;法二:利用sort()的二级排序//先按先奇后偶再按从小到大#include<iostream>using namespace std;#include<algorithm>bool cmp(int a, int b){ if (a % 2 == b & 2) return原创 2022-03-03 13:19:36 · 460 阅读 · 0 评论 -
排序算法——冒泡排序
冒泡排序一点简单的理解冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 //vs2017#include<iostream>using namespace std;int main(){ i..原创 2022-03-03 13:13:13 · 82 阅读 · 0 评论 -
哈夫曼树的带权路径长度总结wpl
//哈夫曼树的带权路径长度//总结//法一:①先对权值从小到大排序。//②选两个最小的加起来成为一个新结点,而这两个最小的值是新结点的左右子结点。//③两个老的结点去掉,新的结点放入再次排序然后重复过程②。//④直到完全生成一棵树。//⑤计算的时候,只计算那些初始权值里面有的值,把它乘以深度//(和传统说的深度不一样,是传统说的深度减一)加起来就是路径长度。//法二:哈夫曼树也可以通过小根堆实现。小根堆每次弹出两个值,然后将二者的和再插入小根堆中。//vs2017//哈夫曼树的带.原创 2022-03-03 11:30:16 · 1410 阅读 · 1 评论 -
栈的应用 括号匹配 c++
在算术表达式中,除了加、减、乘、除等运算外,往往还有括号。包括有大括号{},中括号[],小括号(),尖括号<>等。 对于每一对括号,必须先左边括号,然后右边括号;如果有多个括号,则每种类型的左括号和右括号的个数必须相等。对于c++ 可以用栈来进行匹配对于c语言 可以用数组模拟即可这次就用c++的栈来实现括号匹配vs2017//括号匹配#include<iostream>using namespace std;#include<stack>#in原创 2022-03-03 11:50:49 · 1401 阅读 · 0 评论 -
单链表的建立与排序
指针这一块的确实博大精深,不愧是c的精髓一个字妙啊!/*struct Node { int Element; // 节点中的元素为整数类型 struct Node * Next; // 指向下一个节点};从键盘输入5个整数,将这些整数插入到一个链表中,并按从小到大次序排列,最后输出这些整数。5 3 4 2 11 2 3 4 5*/#include<iostream>using namespace std;typedef struct node{ int dat原创 2022-03-03 11:45:12 · 995 阅读 · 0 评论 -
二叉树的建立与遍历 源代码 c++实现
二叉树C++源代码原创 2022-03-03 11:40:41 · 536 阅读 · 0 评论 -
字符串中子串出现的次数 c语言实现
字符串中子串出现的次数原创 2022-03-03 11:19:50 · 2572 阅读 · 0 评论