算法学习
IMBA鑫鑫
这个作者很懒,什么都没留下…
展开
-
[算法]-快速排序
#include<iostream>using namespace std;void quicksort(int a[],int low,int high){ if(low>=high){//碰面了 此时已经分割完毕 return; } int first=low; int last=high; int key=a[first];//定义一个轴点 wh...原创 2019-03-07 21:17:20 · 118 阅读 · 0 评论 -
[算法]-归并排序
归并排序的思想就是分治法,将数组一直平分,直至最后平分的那部分只有两个元素时候进行比较排序,然后将这个排好序的数组(2个元素)和当时另外一边被平分的数组(2个元素)继续进行比较排序,整合成一个新的数组(4个元素),…直至最终将两个有序的数组进行比较排序最后整合出结果 附上(数据结构c++)书上实例图代码如下:#include<bits/stdc++.h>using namesp...原创 2019-03-17 17:40:10 · 148 阅读 · 0 评论 -
[算法]-选择排序
选择排序思想:1.设定一个k值初始为02.从下标k+1起,遍历数组a,找到数组中最小的数的下标j3.交换a[k]和a[j]的值4.k自增15.重复2~4步骤 直到k值为数组a长度-1代码如下:#include<bits/stdc++.h>using namespace std;void chooseSort(vector<int> &a...原创 2019-04-11 12:52:59 · 152 阅读 · 0 评论 -
[算法]-硬币兑换
思路:根据题意,我们要优先选择尽可能多的硬币种类,其次在种类相同的情况下,所选择的硬币数也要越多越好,所以当我们满足种类最多的情况下应该优先选取面值为1的硬币。这就是一个贪心的策略选择问题了.我们可以先作几个例子试试假设当n为1的时候,我们只能选取面值为1的硬币 1枚。当n为2的时候,我们可以选择面值为1的硬币 2枚或者面值为2的硬币 1枚,由于题意,我们肯定取前者当n为3的时候,因为种...原创 2019-04-09 19:01:09 · 2103 阅读 · 0 评论 -
[算法]-括号匹配深度
思路:由于输入的是合法的括号序列,运用栈的思想,每次进入一个左括号,一个暂存量一定是+1的,每当进入一个右括号,就得和之前的左括号进行抵消,于是这个暂存量就-1了,最大深度通过max函数求得暂存量和当前深度的最大值即可。通俗的来说就是遍历字符串 记录最大’连续’左括号数量,遇到右括号要相应消去一个左括号数量 ,由于题目输入是合法的 所以最大’连续’左括号数量就是这个序列的深度。#includ...原创 2019-04-09 20:00:09 · 1015 阅读 · 0 评论