- 博客(16)
- 收藏
- 关注
原创 基于对象的程序设计(OOP)
1. 层次:类>对象>类体:成员(成员变量、成员函数)ps:其中,类体可以是public,也可以是private,public则可以被外界调用,而private则不能被外界调用2. 定义成员函数法一:函数体>3行:在类体内声明成员函数,在类体外定义成员函数(最常用) 法二:函数体<3行:在声明类时在类体内定义//方法一:在类体内声明成员函数,在类体外定义成员函数class Student{pu
2017-05-31 19:59:16 621
原创 C++期末考试题
输出所有 “水仙花数” 说明: “水仙花数”是一个3位数,其各位数字立方等于该数本身。本题意义:如何分别求得一个整数的个位、十位、百位数#include <iostream>using namespace std;int main(){ int digit,decimal,hundred; for(int i=100;i<1000;i++) {
2017-05-23 17:55:04 10905
原创 C++图形打印题
关键:写代码之前弄清楚这几个问题 1.有几行 2.每一行由哪几种元素组成 3.每一行的元素与行数有无关系1. 星星题#include <iostream>using namespace std;int main(){ for(int j=1;j<6;j++)//j控制行数 { //每一行由空格和星星组成,空格的个数k与行数j有关系 for
2017-05-17 20:51:16 3547
原创 二分查找(Binary Search)
· 适用:有序数组,列表· 思想: step1: 每次从数组的中间元素开始找起 step2: 然后根据目标数字与中间元素的大小关系,锁定该中间元素的左区间或右区间 step3:重复步骤2,直至目标元素=中间元素· 设计算法的tips: 举两个例子代入你的算法,然后算法跟着你的思路走,这些函数关系与递归关系便一清二楚了!例代码:在一个有15个元素的有序数组{2,
2017-05-17 19:14:40 293
原创 指针(Pointer)
使用指针,按照大小顺序,输出两个值#include <iostream>using namespace std;int main(){ int a,b; int * pa=&a; int * pb=&b; //定义指针 cout<<"input two numbers"; cin>>a>>b; if (b>=a) { p
2017-05-16 14:28:11 401
原创 利用python实现任意进制的相互转换
Most important!关键:十进制是bridge基本1: A进制(a) –> 十进制(d) d=int(a,A) 说明:A的取值为2,8,16基本2: 十进制(d)–> A进制(a) a=bin(d) a=oct(d) a=hex(d)So,利用以上两个基本知识,可以实现任意进制的随意转换啦~补充: 二进制的每三位–>八进制的一位 二进制的每四位–>
2017-05-08 21:06:33 2257
原创 插入排序(Insertion sort)
算法描述: the list is divided into two sublists: sorted and unsorted.Step1: move the first element of the unsorted list into the sorted list in the proper place.Step2: repeat this process on the resultin
2017-05-04 02:52:34 274
原创 归并排序(Merge sort)
Time complexity:O(logn)方法:二路归并(2-way merge)对象:有序序列(sorted sequence), 即可以是有序向量(sorted vector),也可以是列表(list)算法性质:迭代步骤: 1.无序向量的递归分解(递归) 2.有序序列的逐层归并(迭代)算法描述:(摘自Oxford一哥们写的DS教材~)“Divide and conquer ”
2017-05-04 01:37:24 388
原创 递归(Recursion)
实例目录阶乘 阶乘求和 Fibonacci Sequence思想写出一个递归的程序,只需要把握两个关键点: 1)基础项 (base equation) 也是递归结束的终止条件 2)通项 (general equation)递归 v.s. 迭代迭代是循环;而递归不含循环迭代不用栈;递归需要调用栈迭代规模的方向:由小到大;而递归:由大到小实例:e.g.1 阶乘#include <
2017-05-03 22:09:10 371
原创 CS基础面试题
目录判断一个数是否为素数 打印出某个区间内的所有素数插入一个数到一个排好序的数组中求一个数组的逆序(reverse order)分解质因数最大公因数 & 最小公倍数求一个数组中的最大值fibonacci 阶乘 排序 插入一个数1 判断一个数是否为素数(prime number)输入一个数,判断其是否为素数#include <iostream>using namespace s
2017-05-03 17:34:43 2734
转载 希尔排序(Shell Sort)
原理:先比较距离远的元素,而不是像简单交换排序算法那样先比较相邻的元素,这样可以快速减少大量的无序情况,从而减轻后续的工作。被比较的元素之间的距离逐步减少,直到减少为1,这时的排序变成了相邻元素的互换。实例:开始: 9 6 3 4 5 7一、 n = 6, gap = 3 在进入第三层for循环,j = 0; 比较v[0] 和 v[3] (v[j] 和 v[j+gap])的大小,如果前者大,就互
2017-05-02 02:22:54 397
原创 关于选取方法的总结(Selection)
本质:选取问题所查找元素的位序k,其实就是在其对应的有序序列中的秩。 下面以中位数选取为例来讲解: Algorithm Time Complexity 1 蛮力算法(所有元素排序后再找) O(nlog2n)O(nlog^2n) 2 减而治之(归并) O(log[min(n1,n2)])O(log[min(n1,n2)]) 3.1 基于优先队列(堆1) O(n+klog
2017-05-02 01:59:16 1015
原创 快速排序(Quick Sort)
原理:快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。因此总的比较和交换次数就少了,速度自然就提高了。当然在最坏的情况下,仍可能是相邻的两个数进行了交换。因此快速排序的最差时间复杂度和
2017-05-02 01:23:45 280
原创 用C++玩转矩阵
随着以后学习的深入,一旦发现了更多相关的操作方法,Lesley便会不断更新这篇文章的~1 矩阵转置//矩阵转置#include <iostream>using namespace std;int main(){ //step 1:创建矩阵(也即二维数组) int a[2][3]; cout<<"input 6 numbers"; for (int
2017-05-01 23:40:02 729
原创 选择排序(Selection Sort)
原理: 1) 外循环执行n-1次,内循环每次比较和交换n-i次(i为第i次外循环) 2) 从数组第一位开始循环,后面从第二个元素开始遇到最小值则与之交换;然后第二次循环,从数组第二个元素开始,从第三个元素开始的最小值与之交换……复杂度//选择排序法#include <iostream>using namespace std;int main(){ //step 1:创建数组
2017-05-01 21:48:43 338
原创 优化后的冒泡排序(Bubble Sort)
冒泡排序时间复杂度(Time Complexity)假设:数组内有n个元素 外循环:最多执行n-1次 内循环:最多扫描n-1次,交换n-1次;因此共为2(n-1)次 ==> 时间复杂度:T(n)=O[2(n−1)2]=O(n2) T(n)=O[2(n-1)^2 ]=O(n^2)空间复杂度(Space Complexity)空间复杂度:S(n)=O(1) S(n)=O(1)算法描述1 st r
2017-05-01 18:25:48 611
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人