![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
数据结构算法。
conetwo
csdn
展开
-
堆排序算法
void BuildMaxHeap(int a[], int len){ for(int i = len/2; i > 0 ; i--) { AdjustDown(a, i, len); }}// 向下调整void AdjustDown(int a[], int k, int len){ a[0] = a[k]; for...原创 2017-03-08 14:17:38 · 319 阅读 · 0 评论 -
二维数组(动态规划)
简要描述: 给定一个M行N列的矩阵(M*N个格子),每个格子中放着一定数量的平安果。 你从左上角的各自开始,只能向下或者向右走,目的地是右下角的格子。 每走过一个格子,就把格子上的平安果都收集起来。求你最多能收集到多少平安果。 注意:当经过一个格子时,需要一次性把格子里的平安果都拿走。 (1<=N,M<=50);每个格子里的平安果数量是0到1000(包含0和1000...原创 2018-08-08 16:59:29 · 4912 阅读 · 1 评论 -
质数因子
输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )int main(void){ long input; while (cin >> input) { while (input != 1) { for (int i = 2; i <= in...原创 2018-08-02 14:32:58 · 172 阅读 · 0 评论 -
十六进制的数值字符串,输出该数值的十进制字符串
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入)#include &lt;iostream&gt;#include &lt;string&gt;#include &lt;cmath&gt;using namespace std;int main(void){ string str; int i = 0, len, sum;...原创 2018-08-02 14:14:12 · 1192 阅读 · 0 评论 -
计算字符串最后一个单词的长度,单词以空格隔开
#include &lt;iostream&gt;#include &lt;string&gt;using namespace std;int Num(char *str){ if (str == nullptr) return 0; char *ptr = str; int num = 0, index = 0, n = 0; whi...原创 2018-08-01 15:54:58 · 1103 阅读 · 0 评论 -
一颗二叉搜索树,找出树中的第k大节点
最朴素的想法,中序遍历就是二叉搜索树的递增序列,那直接写出整棵树的中序遍历即可。class Solution{public: TreeNode* KthNode(TreeNode* pRoot, int k) { if (!pRoot || k < 0) return nullptr; vector<...原创 2018-08-01 13:48:08 · 4643 阅读 · 1 评论 -
字符串转为整数,实现atoi功能
atoi通过全局变量来区分返回0的情况。 如果是非法输入,返回0,并把这个全局变量设为特殊标志; 如果输入是”0”,则返回0,不会设置全局变量。enum Status { kValid = 0, kInvalid};int g_nStatus = kValid;int StrToInt(const char* str){ g_nStatus = kInvalid; ...原创 2018-07-28 15:30:12 · 379 阅读 · 0 评论 -
从扑克牌中随机抽5张,判断是不是顺子,大小王可以看成任意数字(看成0)
首先将数组排序再统计0的个数和相邻数字之间的空缺总数如果空缺总数小于或等于0的个数,那么这个数组就是连续的,反之不连续bool IsContinuous(int* number, int length){ if(numbers == NULL || length < 1) { return false; } qsort(numb...原创 2018-07-23 16:17:39 · 2557 阅读 · 0 评论 -
简单选择排序,冒泡排序
简单选择排序,冒泡排序思路描述void selectSort(int a[], int n){ for(i =0 ; i 1; i++) { min = i; for(j = i; j 1; j++) if(a[j] min]) min = j; if(min != i) Swap(a[i], a[原创 2017-05-26 22:38:33 · 241 阅读 · 0 评论 -
快速排序算法
int Partition(int a[], int low, int high){ int pivot = a[low]; while(low { while(low = pivot) high--; a[low] = a[high]; // 将比枢轴值小的的元素移动到左端 while(lo原创 2017-03-08 15:28:07 · 560 阅读 · 0 评论 -
直接插入排序和折半插入排序算法
void insertSort(int a[], int n){ int i, j; for(i = 2; i { a[0] = a[i]; for(j = i - 1; a[0] a[j+1] = a[j]; a[j +1] = a[0]; }原创 2017-03-08 15:50:49 · 484 阅读 · 0 评论 -
归并排序算法
int *B = (int *)malloc((n+1) * sizeof(int));void Merge(int a[], int low, int mid, int high){ for(int k = low; k { B[k] = a[k]; } for(i = low, j = mid + 1, k = i;原创 2017-03-08 14:50:29 · 228 阅读 · 0 评论 -
最小的K个数--(快排法)
class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> result; int len = input.size(); if (len == 0 ||...原创 2018-09-04 15:14:04 · 276 阅读 · 0 评论