数组:数组是相同类型类型变量的集合,数组可以被定义成为任何类型,特别要素:通过下标来访问它。
java严格地坚持以保证你不会意外地去存储或引用在数组范围以外的值。java的运行系统会检查以确保所有的数组下标都在正确的范围之 内(java与C/C++从根本上不同,C/C++不提供运行边界检查)
插入排序:
//首先选择第一个无序的数据N,把它的值用temp标记,然后和N-1,做比较。一次以后,N前面的数据就完成了排序。
public class InsertionSort {
public static void insert(int a[]){
int in, out;
for(out= 1;out<a.length;out++){
int temp = a[out];
in = out;
while(in>0&&a[in-1]>temp){
a[in] = a[in-1];
--in;
}
a[in] = temp;
}
for(int i = 0;i<a.length;i++){
System.out.println(a[i]);
}
}
栈:是限制仅在表的一端进行插入和删除运算的线性表。
通常称插入和删除这一端为栈顶,而另一端称为栈底,没有元素称为空栈
栈为后进先出的线性表 (LIFO表 last in frist out)。
队列:是只允许在一端进行插入,在另一端进行删除的运算受限的线性表。
允许删除的一端称之为队头 ,允许插入的称为队尾,没有元素的称为空队列
队列称为先进先出的线性表(FIFO).
单链表:用一组地址任意的存储单元存放线性表中的数据元素。
双端链表:最后一个链接点的引用,就像对第一链接点的引用一样。
哈希表:
记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应。这个对应关系f为哈希函数,按这个思想建立的表称为为哈希表。
递归:是函数调用自身的一种特殊的编程技术。
递归二分查找
- public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){
- int midIndex = (beginIndex+endIndex)/2;
- if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){
- return -1;
- }
- if(data <dataset[midIndex]){
- return binarySearch(dataset,data,beginIndex,midIndex-1);
- }else if(data>dataset[midIndex]){
- return binarySearch(dataset,data,midIndex+1,endIndex);
- }else {
- return midIndex;
- }
- }
二叉树:二叉树是一种树形结构,它的特点是每个结点至多只有两棵树
存储结构:顺序存储结构和链式存储结构
前序遍历:先访问根结点,然后再前序遍历左结点,然后再前序遍历右结点。
中序遍历:先中序遍历左结点,然后再访问根结点,最后中序遍历右结点。
后序遍历:先中序遍历左结点,然后再中序遍历右结点,最后访问根结点。
红—黑树:自平衡二叉
查找
树