数据结构

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%左右了。

  

 

   这是运行结果