数据结构
1.数组是最基本的数据结构,是一张表(线性表),数据元素之间是一对一的关系,除了第一个和最后一个之外,其他的元素都是首尾连接的。
2.链表(单向链表只维护它的下一个;双向链表维护它的上一个和下一个)
3.树
4.图(深度遍历和广度遍历)
数据结构例题
查找算法
1.线性查找(好处:简单、便于理解)
2.二分法查找
· 如果要使用二分法查找找数字,前提是这个数组必须有顺序
排序算法
1.冒泡排序
排序的简便写法(从小到大)
2.选择排序(比冒泡排序的效率高)
选择排序的思路梳理:
第一轮
i = 0,minindex = 0,里层的for循环int j = 1;j < 7;j++
if(arr[0] > arr[1]),由于if不满足,则继续下一个比较
j = 2;if(arr[0] > arr[2]),不满足,进行下一次比较
j = 3;if(arr[0] > arr[3]),不满足,进行下一次比较
j = 4;if(arr[0] > arr[4]),不满足,进行下一次比较
j = 5;if(arr[0] > arr[5]),由于if满足条件,执行了minindex = j;
j = 6;if(arr[5] > arr[6]),不满足,进行下一次比较
j = 7;if(arr[5] > arr[7]),不满足,进行下一次比较
到此为止,里层的for循环执行完毕,minindex = 5,
执行了换位
int temp = arr[5];
arr[5] = arr[0];
arr[0] = temp;
i = 0的这次外层循环执行完毕,数组变成了 -8 25 48 12 10 1 127 56
第二轮
i = 1,minindex = 1,里层的for循环int j = 1;j < 7;j++
j = 2;if(arr[1] > arr[2]),不满足,进行下一次比较
j = 3;if(arr[0] > arr[3]),由于if满足条件,执行了minindex = 3;
j = 4;if(arr[3] > arr[4]),由于if满足条件,执行了minindex = 4;
j = 5;if(arr[4] > arr[5]),由于if满足条件,执行了minindex = 5;
j = 6;if(arr[5] > arr[6]),不满足,进行下一次比较
j = 7;if(arr[5] > arr[7]),不满足,进行下一次比较
到此为止,里层的for循环执行完毕,minindex = 5,
执行了换位
int temp = arr[5];
arr[5] = arr[1];
arr[1] = temp;
i = 0的这次外层循环执行完毕,数组变成了 -8 1 48 12 10 25 127 56
后面以此类推....
3.插入排序
数组的反转
Arrays是数组的一个工具类,是专门操作数组的一个工具类
思路一:创建一个等长的数组,把当前数组中的每一个元素倒着添加到新数组里,再把新数组赋值给老数组
int [] newArr = new int[arr.length];
思路二:利用交换的方式
int [] arr = new int[]{1,25,48,12,10,-8,127,56};
for (int i = 0; i < arr.length / 2; i++) {
int temp = arr[arr.length - 1 -i];
arr[arr.length - 1 -i] = arr[i];
arr[i] = temp;
}
数组的扩容
晚上的作业要求用数组,做一个员工信息管理系统,通过控制台输入,这是我的部分代码和运行结果,反正过程写的有那么些许的费劲,但是也写出来了,还给几个同学讲了一遍,帮他们也写出来了!帮他们的同时,感觉自己对知识点的理解也更加透彻了些,如果说课上听老师讲完一遍的理解程度是70%的话,那通过给同学梳理知识点,梳理思路之后,对知识点的理解程度我感觉可以达到85%左右了。
这是运行结果