• 欢迎光临~

2022-07-15 吉林化工学院 第一组 韩嘉宁 学习笔记(Java前期 3)

开发技术 开发技术 2022-07-18 次浏览

写程序思路:

写程序思路:
1.先完成需求功能
2.进行优化处理
3.代码重构

数据结构:

  • 数组(最基本的数据结构,是一张线性表)

    线性表:数据元素是一对一的,除了首尾元素,其余元素都为首尾相接

  • 链表(每个数据都是通过链连接起来的)

    单向链表

    双线链表

查找算法:

  • 线性查找: 简单,便于理解,只是适应简单查找

  • 二分法

  • int []arr=new int[]{1,2,3,4,5,6,7,8};
            System.out.println("请输入一个数:");
            Scanner scan=new Scanner(System.in);
            int num=scan.nextInt();
            int left=0;
            int right=arr.length -1;
            if(num <arr[left] || num >arr[right]){
                System.out.println(num + "不在数组中");
            }else{
                //找出中间数
                //用来保存 找到的数
                int res=-1;
                while(left<=right) {
                    int middle = (left + right) / 2;
                    if (arr[middle] == num){
                        res=middle;
    
                System.out.println(num + "在数组中"+"且该数在数组中的位置是:" +middle);
                        break;
                    }else if(arr[middle] > num){
                        right=middle-1;
                    }else{
                        left=middle + 1;
                    }
                }
            }
    

排序算法:

  • 1.冒泡排序

    需要两层循环嵌套:for

    外层循环控制 需要各个数之间进行比较的轮次

    内层循环控制 每个数需要比较次数

    int[] arr=new int[]{2,5,3,7,9,1,68};
            //外层循环比较轮次
            //内存循环
            for(int i=0;i<arr.length-1;i++){
                //已经控制好了比较次数
                //比较的次数 =数组长度 -1
                for(int j=0;j<arr.length-i-1;j++){
                    if(arr[j]>arr[j+1]){
                       int temp=arr[j];
                       arr[j]=arr[j+1];
                       arr[j+1]=temp;
    
    
                    }
    //                System.out.println();
                }
    
            }
            for(int i=0;i<arr.length;i++){
                System.out.print(arr[i] + "、");
            }
    
  • 2.快速排序

  • 3.插入排序

  • 4.选择排序

选择排序
 int[] arr=new int[]{1,25,48,12,10,-8,127,56};
        //min最小下标
        int index=0;
        for(int i=0;i<arr.length;i++){//将每个数都比较一次(轮次)
            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.println("第" +(i+1) +"次结果是:" );
            for (int i1 : arr) {
                System.out.print(i1 +"、");
            }
        }
  • 5.希尔排序

  • 6.堆排序

  • 7.归并排序

  • 8.桶排序

感悟:今天有关排序算法的理解并不是很透彻,虽然冒泡排序与选择排序在逻辑上有些相同,但当落实到代码上的时候选择排序却比冒泡排序难很多,尤其是在内层循环比较的时候,尝试很多次才使其逻辑正确并运行出结果。
当时反复更改逻辑的时候,简直是太崩溃了,但当缕清后心情大为舒畅。

喜欢 (0)