排序算法
插入排序即将所需排序的数组分为有序和无序两个部分且有序区在前。每次从无序区中取出一个元素插到有序区的适当位置。
如果需要排序的元素插入有序区的中间,则在插入元素后有序区的每一位元素后移。
1234567891011121314151617/*法一:交换元素值*/void InsertSort(int *p,int n){ int temp; //用来存储下一个要排序的元素 int sorted; //有序区的长度 int i,j; for(i = 1 ; i < n ; i++){//从第二个元素开始排序 sorted = i-1; //有序区从头到将要排序的元素的前一个 temp = p[i]; while(sorted >= 0 && p[sorted] > temp){ //从后向前比较,将比较和后移工作放在一个while循环里,因为不清楚循环次数所以使用while循环 p[sorted+1] = p[sorted]; //从要排序的元 ...
字符串匹配KMP算法
字符串匹配算法给定一行字符串文本为主串,另一个字符串为模式串,在主串中查找模式串首次出现的位置,并返回其位置下标。
蛮力法(BF)即依次比较主串和模式串的每一个字母,碰见不匹配的字母时,主串和模式串从头右移一位重新匹配,直至成功或遍历完成。
1234567891011121314151617181920212223242526272829303132333435363738//法一:int BF(char S[],char T[]){ int i,k,m; int j = strlen(T); for( i = 0 ; i < strlen(S) - j ; i++ ){ k = i ; m = 0 ; while(k <= i + j){ if( S[k++] != T[m++] ) break; if( k == i+j ){ return i + 1; } } } printf("error!"); return 0;}//法二:int BF(char T[],char S[]){ int index = 0; int i = 0 ...
回溯和递归算法总结
递归分书问题
思路(1) 定义一个整型的二维数组,将表中的阅读喜好用初始化方法赋给这个二维数组。可定义:
int like[5][5] = { {0,0,1,1,0}, {1,1,0,0,1}, {0,1,1,0,1}, {0,0,0,1,0}, {0,1,0,0,1} };
(2) 定义一个整型一维数组book[5],用来记录书是否已被选用。用下标作为5本书的编号,被选过元素值为1,未被选过元素值为0,初始化皆为0。
int book[5] = {0,0,0,0,0};
(3) 画出思路图。
① 定义试着给第i人分书的函数Try(i),i = 0,1,2,3,4。
② 试着给第i个人分书,先试分0号书,再分1号书,分2号书,……,因此有一个与结点,让j表示书,j=0,1,2,3,4。
③条件c是由两部分“与”起来的,“第i个人喜欢j书,且j书尚未被分走”。满足这个条件是i人能够得到j书的条件。
④ 如果不满足c条件,则什么也不做,这是直接可解结点。、
⑤ 满足c条件,做三件事: 第一件事:将j书分给i,用一个数组take[i]=j,记住书j给了i,同时记录j书已被选用 ...
关于回调和反射的简单分享
调用同步调用123456789101112public class Person{ public void openDoor(Door door){ door.open(); System.out.println("新的一天开始了"); } }class Door{ public void open(){ System.out,println("门被打开了"); }}
在打印“新的一天开始了”内容时,door.open()方法已经执行结束。(可能会造成阻塞问题)
异步调用12345678910111213141516public class Person{ public void openDoor(Door door){ new Thread(new Runnable(){ public void run(){ door.open(); } }).start(); System.out. ...
Python笔记
变量和简单数据类型字符串引号括起来的都是字符串
修改大小写
.title() 每个单词首字母大写
.upper() 全大写
.lower() 全小写
在字符串中使用变量
在字符串中插入变量的值,在前引号前加上f(format)在字符串内将插入的变量用{}括起。
删除空白
python能找出字符串开头和结尾多余的空白。
.rstrip() 删除结尾的空白(暂时)永久删除需关联到变量
.lstrip() 开头
.strip() 开头和结尾
数整数
**表示乘方运算
浮点数
结果包含的小数位数可能是不确定的
任意两个数相除时,结果总是浮点数。
下划线
可使用下划线将数字分组不会打印下划线
赋值
可同时给多个变量赋值
1x,y,z = 0,0,0
常量
python没有内置的常量类型,通常使用全大写来指出将某个变量视为常量。
注释python用#注释一行
列表简介列表用[]表示列表,用逗号分隔其中元素。
打印列表时会将 ...
java复习第三次
java复习第三次lambda 表达式简介lambda表达式是一个可传递的代码块,可在以后执行一次或多次。lambda表示参数。
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
使用 Lambda 表达式可以使代码变的更加简洁紧凑。
特性
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
书写格式-> 操作符将lambda表达式分为两个部分 左侧:lambda表达式的参数列表 右侧:lambda表达式所执行的功能即lambda体
1.无参数,无返回值
无参数仍要提供空括号,就像无方法参数一样。
1() -> System.out.println("Hello world");
2.一个参数,无返回值
当参数类型可推导得出时小括号可以省略
12(x) ...
java复习第二次
java复习第二次继承(extends)表明正在构造的新类派生于一个已存在的类。称为超类、基类或父类,新类称为子类。
应将最一般的方法放在超类中,更一般的方法放在子类中。
覆盖方法在子类中,可以增加字段、方法或覆盖超类的方法,但继承不会删除任何字段或方法。
调用超类方法/构造器使用关键字super。
多态指对象变量是多态的,指超类的任何对象的任何地方都可以使用子类对象替换。(子类对象具有子类和超类的性质,但超类对象不一定具有子类的性质)
方法调用1.编译器查看对象的类型声明和方法名。会列举所有同名方法。
2.确定方法调用的参数进行匹配。
3.如果方法被private、final、static修饰,则编译器能准确调用(静态绑定)。
4.采用动态绑定调用方法时,虚拟机会调用与所引用对象实际类型对应的方法。优先调用子类的,若子类未定义,则调用超类方法。
阻止继承(final)阻止继承类:将类声明为final
阻止子类覆盖方法:将方法声明为final
强制类型转换将子类对象赋值给超类是可以的,但将超类对象赋值给子类必须进行强转。在进行强转前需使用instanceof操作符判断是否能成功强转。
...
java复习第一次
java 复习第一次类和对象类间关系
依赖
即使用一个类时需要访问另一个类的对象
e.g. 订单类需要访问账户对象查看信用状态
聚合
类A的对象包含一些类B的对象
继承
子类继承父类
自定义类属性
final实例字段
这样的字段必须在构造对象时初始化并不能再修改。
此修饰符对于类型为基本类型或不可变类的字段尤其有用。
静态字段
将一个字段定义为static,则每个类只有一个这样的字段,即使没有对象,静态字段也存在。(属于类而不属于单个对象)
而对于非静态的实例字段,每个对象都有自己的一个副本。(所有类的对象的这个字段都是一个/类的每个对象都有各自的)
初始化数据字段的方法
1.在构造器中设置值
2.在声明中赋值
3.初始化块: 一个类的声明中可以包含任意多个代码块。只要构造类的对象,这些块就会被执行。
构造器
与类同名
一个类可以有多个构造器(参数不同)(重载)
构造器可以没有参数或有多个参数
没有返回值(其实返回值就是所创建的类的对象)
常与new操作符一起调用
无参数的构造器:创建对象时,对象状态会设置为适当的默认 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment