数据结构/算法
文章平均质量分 89
_ToBin
读与写,知与行。
展开
-
选择排序C++实现
选择排序的思想: 假设要从小到大排序n个数,第一步首先在这n个数中找到最大的那一个数,然后将其和arr[n-1]也就是数组最后一个元素交换,接下来再在0~n-2之间找剩下的元素中最大的,再将其和n-2也就是倒数第一个位置的元素交换,以此类推。 选择排序的时间复杂度最好的情况是O(n^2) ,平均时间也是 O(n^2),最坏时间也是O(n^2),它是一个不稳定的排序算法。 可以看做是...原创 2018-03-06 22:49:38 · 530 阅读 · 0 评论 -
冒泡排序C++实现
算法思想: 如果要对具有n个成员的数组进行从小到大的顺序排列,那么从第0个元素开始,让它和第一个元素进行比较,如果arr[0] > arr[1],那么就将arr[0]和arr[1]进行交换,以此类推到arr[n-2](之所以不是arr[n-1]则是因为如果当前元素为arr[n-1],那么arr[n-1+1]就会发生越界),这样总是拿arr[n]和arr[n+1]去作比较,并在满足条件的...原创 2018-03-06 23:08:12 · 383 阅读 · 0 评论 -
直接插入排序C++实现
算法思想: 要对元素个数为n(n>=1)的数组进行从小到大的顺序排序,首先可以把第一个元素arr[0]当做是一个初始有序序列,然后从这个有序序列之外的下一个元素开始,分别和其上一个元素进行比较,如果当前元素小于上一个元素,那么就将该元素插入到之前已经有序的序列合适的位置…… 如果你玩过斗地主,以上所有的理论说明你都可以忽略: 你在玩斗地主摸牌并整理的过程实际上就是一个直接插...原创 2018-03-07 01:19:03 · 835 阅读 · 0 评论 -
快速排序C++实现
算法思想: 将一个长度为n(n>0)的数组进行从小到大的顺序排列。快速排序首先需要在该数组中找任意一个元素出来作为比较基准(pivot),这里假设找的pivot为当前数组的最后一个元素,即 arr[n-1],那么接下来在arr[0] - arr[n -2]这个数组中,我要将它们分为2大类(即2个子数组),第一个数组要确保所有元素比pivot要小或者等于pivot,第二个数组中的所有元素...原创 2018-03-07 16:01:34 · 615 阅读 · 0 评论 -
Z字型编排问题(C++)
问题:给定一个二维原数组,输出该数组矩阵进行Z字形编排后的内容。原二维数组示例:输出示例:算法描述:个人思路: 可以利用“走迷宫”算法的思路,先把所有可以移动的方向枚举出来,如下:enum WAY{ RIGHT, BOTTOM, LEFTBOTTOM, RIGHTTOP, NONE} nextWay; 然后利用状态机思想,在循环遍历原数组的内循环中,switch case一下当...原创 2018-02-24 11:48:20 · 1015 阅读 · 0 评论 -
超大数字乘法问题(c++)
问题描述: 用C++实现2个大数相乘。算法思路: 用指定len的2个整型数组代表2个大数,设乘数为A,被乘数为B,保存结果的数组为buffer,可得buffer的元素总数为A.len + B.len。逆序循环遍历A(从个位到首位),在每次循环体中,取A的一位数与B的每一位数相乘,并且每次乘积都保存到buffer指定位置上(当前拿的A的哪一位,结果的保存就从buffer的哪一位开始保存)...原创 2018-02-24 21:12:46 · 1188 阅读 · 0 评论 -
C++根据广义表(括号表示法)构造二叉树,并分别进行前中后序层次遍历
前中后序遍历是递归形式,层次遍历是非递归形式。代码:#include <iostream>#include <stdlib.h>#include <assert.h>#include <stack>#include <queue>using namespace std;template<class T>stru...原创 2018-03-11 17:21:47 · 3372 阅读 · 0 评论