lyt0612

导航

2022-07-15 第八组 刘禹彤 学习笔记

打卡第7天

今天学习java算法和数组

 

 

1.数据结构:

  1. 数组是最基本的数据结构,是一张表,线性表(数据元素之间一对一的关系),除第一个和最后一个之外都是首尾连接的
  2. 链表

2.写程序的思路:

  1. 先完成需求要求的功能
  2. 根据程序运行的结果进行优化处理
  3. 代码的重构(让代码量更少
  4. 提升效率(时间复杂度,空间复杂度

3.查找算法:

  1. 线性查找(简单,便于理解
  2. 二分法(前提这个算法必须有顺序

4.排序算法

  1. 冒泡排序
  2. 快速排序
  3. 插入排序
  4. 选择排序
  5. 希尔排序
  6. 堆排序
  7. 归井排序
  8. 桶排序

冒泡排序思路分析:先拿第一个数和后面的数一一比较

(例子)

 

 

 

选择排序--------换位

(例子)

 

 

 

插入排序

思路

  1. 从第一个元素开始,假设第一个元素已经被排出去了
  2. 取出下一个元素,在已经排序的元素的序列中向前扫描
  3. 如果该元素(已排序)大于后面的元素,将该元素移到下一个位置
  4. 将新元素插入到原来的位置
  5. 以此类推

(例子)

 

 

 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();
        }

    }
}

运行结果:

 

posted on 2022-07-15 18:20  小仙女吖~  阅读(17)  评论(1编辑  收藏  举报