2022-07-15 第八组 刘禹彤 学习笔记
打卡第7天
今天学习java算法和数组
1.数据结构:
- 数组是最基本的数据结构,是一张表,线性表(数据元素之间一对一的关系),除第一个和最后一个之外都是首尾连接的
- 链表
- 树
- 图
2.写程序的思路:
- 先完成需求要求的功能
- 根据程序运行的结果进行优化处理
- 代码的重构(让代码量更少)
- 提升效率(时间复杂度,空间复杂度)
3.查找算法:
- 线性查找(简单,便于理解)
- 二分法(前提这个算法必须有顺序)
4.排序算法
- 冒泡排序
- 快速排序
- 插入排序
- 选择排序
- 希尔排序
- 堆排序
- 归井排序
- 桶排序
冒泡排序思路分析:先拿第一个数和后面的数一一比较
(例子)
选择排序--------换位
(例子)
插入排序
思路
- 从第一个元素开始,假设第一个元素已经被排出去了
- 取出下一个元素,在已经排序的元素的序列中向前扫描
- 如果该元素(已排序)大于后面的元素,将该元素移到下一个位置
- 将新元素插入到原来的位置
- 以此类推
(例子)
6.数组的扩容
###今日心得:
今天学习了两种查找方法和三种排序,老师讲的十分细致,通过一步步的分析,对代码的意思都理解了,开始学习JAVA的算法感觉有难度,还是需要多加练习,对学习过的知识进行巩固。
###练习:
package a; public class Ch05 { public static void main(String[] args) { /* * 第一轮:i=0 ,mindex= ,里面的for循环int j = 1;j<7 * if(arr[0] > arr[1]{}.由于if不满足,则继续下一次比较 */ int [] arr = new int[]{1,25,48,12,10,-8,-127,56}; for (int i = 0; i < arr.length ; i++) { //假设最小数的1下标 int minIndex = i; for (int j =i + 1; j < arr.length; j++) { if (arr[minIndex] > arr[j]){//找到了最小值 minIndex = j; } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; System.out.print("第" + (i+1) + "次的比较结果是:"); for(int i1 : arr){ System.out.print(i1 + "."); } System.out.println(); } } }
运行结果: