数据结构:
- 数据与数据之间的逻辑关系:集合、一对一、一对多,多对多
- 数据的存储结构
线性表:顺序表(比如:数组)、链表、栈(先进后出)、队列(先进先出) - 树形结构:二叉树…
- 图形结构:有向图
算法:
排序算法
搜索算法
数组的复制:
int array1,array2;
array1 = new int[] {1,2,3};
array2 = new int[array.length];
for(int i = 0;i < array2.length;i++){
array2[i] = array1[i];
}
数组的反转:
方法1:
for(int i = 0;i < array2.length / 2;i++) {
String temp = array2[i];
array2[i] = array2[array2.length - i - 1];
array2[array2.length - i -1] = temp;
}
方法2:
for(int i = 0,j = array2.length - 1;i < j ;i++,j--) {
String temp = array2[i];
array2[i] = array2[j];
array2[j] = temp;
}
数组的查找:
线性查找:
boolean isFlag = true;
for(int i = 0;i < array2.length;i++) {
if(array2[i].equals("Y")) {
System.out.print(i);
isFlag = false;
break;
}
}
if(isFlag) System.out.print("没找到");
二分查找:
要求:数组必须是有序的
boolean isFlag = true;
int head = 0 ;
int end = array2.length - 1;
int dest1 = -1;
while(head <= end){
int middle = (head + end) / 2;
if( array2[middle] == dest1){
System.out.print(i);
isFlag = false;
break;
}else if(array2[middle] > dest1){
end = middle - 1;
}else {
head = middle + 1;
}
}
if(isFlag) System.out.print("没找到");
衡量排序算法的好坏
- 时间复杂度
- 空间复杂度
- 稳定性
算法的五大特征:
- 输入
- 输出
- 有穷性
- 确定性
- 可行性
冒泡排序
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr.length - 1 - i;j++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i] = temp;
}
}
}