day11java基础学习笔记

     2022-03-15     566

关键词:

冒泡排序

相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处,第二次比较厚,最大值放在了倒数第二的位置,一直到第二个元素确定了,整个数组的顺序也就确定了
    public class ArrayDemo {
        public static void main(String[] args) {
            int[] arr = {7,3,6,1,9,4,0};
            System.out.println("排序前");
            method(arr);
            bubbleSort(arr);
            System.out.println("排序后");
            method(arr);
        }
        //实现升序排列
        public static void bubbleSort(int[] arr){
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = 0; j < arr.length-1-i; j++) {
                    if (arr[j]>arr[j+1]) {
                        int temp = arr[j];
                        arr[j]= arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
        }
        //自定义数组打印方法
        public static void method(int[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i]);
            }
            System.out.println();
        }
    }

选择排序

从0索引开始,依次和后面的元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处,依次类推,直到倒数第二个数和最后一个数比完,得出的较大就是倒数第一个位置上的数是所有数中的最大值

    public class ArrayDemo1 {
        public static void main(String[] args) {
            int[] arr ={3,4,8,1,2,5,7,6};
            System.out.println("排序前");
            print(arr);
            selectSort(arr);
            System.out.println("排序后");
            print(arr);
        }public static void selectSort(int[] arr){
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = i+1; j < arr.length; j++) {
                    if(arr[i]>arr[j]){
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
        }
        public static void print(int[] arr){
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i]);
            }
            System.out.println();
        }
    }

总结

两种排序最大的不同是里层循环的开始值和结束值

  • 冒泡排序:内层循环开始值都是0开始,结束值是变化的
  • 选择排序:内层循环的开始值是变化的,结束值是固定的,都是最大索引值。

二分查找(折半查找)

    /*
     * 查找:
     *      基本查找:数组元素无序(从头找到尾)
     *      二分查找(折半查找):数组元素有序
     * 
     * 分析:
     *      A:定义最大索引,最小索引
     *      B:计算出中间索引
     *      C:拿中间索引的值和要查找的值进行比较
     *          相等:就返回当前的中间索引
     *          不相等:
     *              大   左边找
     *              小   右边找
     *      D:重新计算出中间索引
     *          大   左边找
     *              max = mid - 1;
     *          小   右边找
     *              min = mid + 1;
     *      E:回到B
     */
    public class ArrayDemo3 {
        public static void main(String[] args) {
            int[] arr = {3,4,2,8,5,6,1};
            selectSort(arr);
            int res = getIndex(arr, 6);
            System.out.println(res);
        }
        //定义方法,先将数组排列
        public static void selectSort(int[] ch){
            for (int i = 0; i < ch.length-1; i++) {
                for (int j = i+1; j < ch.length; j++) {
                    if (ch[i]>ch[j]) {
                        int temp = ch[i];
                        ch[i] = ch[j];
                        ch[j] = temp;
                    }
                }
            }
        }
        public static int getIndex(int[] arr, int a){
            //定义最大索引、最小索引
            int max = arr.length-1;
            int min = 0;
            //计算出中间索引
            int mid = (min+max)/2;
            while(true){
                if(arr[mid]==a){
                    return mid;
                }else{
                    if(arr[mid]<a){
                        min = mid +1;
                    }else{
                        max = mid -1;
                    }
                    if(min>max){
                        return -1;
                    }
                    mid = (min+max)/2;
                }
            }
        }
    }

Arrays类概述

系统提供针对数组进行的操作的工具类

提供了排序、查找等功能。不用我们手动去写算法,直接拿来就用

静态方法

  • public static String toString(int[] a):将数组转换成字符串
  • public static void sort(int[] a):对一个int数组进行升序排序ascending
  • public static int binarySearch(int[] a,int key):在数组中进行二分查找

    调用方法:
    
    Arrays.方法名(形参)
    如:Arrays.sort(arr);

day09java基础学习笔记

抽象abstract抽象类和抽象方法必须用abstract关键字修饰抽象类格式abstractclass类名{}抽象方法定义,在返回值钱,或修饰符前加上abstract关键字方法没有方法体,即:没有{}abstractpublicvoideat();publicabstractvoideat();抽象类不一定有抽象方... 查看详情

day12java基础学习笔记

集合/集合框架(List)数组和集合的区别数组长度固定的,一旦定义,就无法改变集合长度可变数组中可以粗出基本数据类型,也可以是对象(实际上是对象的引用集合只能存储对象的引用)Java集合体系:分为Collection和Map两种... 查看详情

day02java基础学习笔记

一、数据类型1.java中默认的整数类型就是int型;但一个数值很小在byte、short的取值范围内时,可以通过赋值来改变数据类型,比如:byte=12;short=15;如果数值过大超过了int的取值范围,java不会把它默认成long类型,需要在数据后... 查看详情

day08java基础学习笔记

继承extends(也叫扩展)多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。通过extends关键字可以实现类的继承class子类名extends父类名{}继承的案... 查看详情

day03java基础学习笔记

三元运算符1.格式:(条件表达式)?表达式1:表达式2;2.运算规则:先对条件表达式求值,得出一个逻辑值,如果至为true,则执行表达式1;如果值为false,则执行表达式2。443.典型用法:Stringstr=(5<3)?"5大于3":"5大于3";... 查看详情

零基础入门学习java课堂笔记——day04

Java数组1.数组概述定义:数组是相同类型的有序集合,同一组同一类型的数据可以按照先后次序排列组合在一起,其中一个数据可以称为元素,每个数组元素可以通过一个下表访问它们2.数组声明创建dataType[]arrayRefVar;//firstdataType... 查看详情

day06java基础学习笔记

面向对象当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始改进,能不能把这些步骤和功能再进行封装,封装时根据不同... 查看详情

day02java基础学习笔记

自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型1.各种进制的表现形式和特点二进制,八进制,十进制,十六进制二进... 查看详情

毕向东java视频学习笔记day11-day13多线程

Java_Day12多线程01进程:正在进行中的程序(直译).线程:就是进程中一个负责程序执行的控制单元(执行路径)一个进程中可以多执行路径,称之为多线程。一个进程中至少要有一个线程。开启多个线程是为了同时运行多部分代码。... 查看详情

java学习笔记day_01

...以我按照传智播客的视频和Java核心思想来学习,前面的基础部分主要是用于个人的复习使用的。第一段代码:HelloWorldpublicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.prin 查看详情

javascript学习笔记整理day11

一.词边界、正向预查、反向预查  1.词边界    词边界(单词的边界)    B非词边界     //匹配出第二个hellovarstr=‘hellobabyhello‘;varreg=/hello/;console.log(str.match(reg));//匹配出第一个hellovarreg=/helloB/;console.log(str.m... 查看详情

python学习笔记day1基础介绍

Alex博客:http://www.cnblogs.com/alex3714/articles/5465198.html一、本节主要内容Python介绍发展史Python2or3?安装HelloWorld程序变量用户输入模块初识.pyc文件数据类型初识数据运算表达式if...else语句表达式for循环breakandcontinue 表达式while循环... 查看详情

传智播客刘意_2015年java基础视频-深入浅出精华版笔记(day11~)(2016年2月3日16:01:00)

day111.Eclipse的基本使用编译:自动编译,在保存的那一刻(ctrl+s)帮你做好了(class文件出现在bin目录下) 2.Hierarchy 显示Java继承层次结构,选中类后F43.eclipse行号的显示与隐藏4.D:字体大小及颜色       &... 查看详情

day2计算机基础简介学习笔记

 计算机一般来说计算机是由硬件系统和软件系统组成,今天只了解硬件系统的相关原理。 简单来说一台典型的计算机在硬件方面主要由cpu,储存器,I/O设备和一条系统总线连接起来的。  1.cpucpu是计算机的大脑,... 查看详情

java基础笔记day01

JAVA开发之路---基础篇软件开发软件:一系列按照特定顺序组织的计算机数据和指令的集合常见的软件:      系统软件:windowsdosIOS      应用软件:扫雷等桌面软件什么是开发:制作软... 查看详情

java学习笔记---day1

💕前言:作者是一名正在学习JAVA的初学者,每天分享自己的学习笔记,希望能和大家一起进步成长💕目录💕前言:作者是一名正在学习JAVA的初学者,每天分享自己的学习笔记,希望能和大家... 查看详情

java学习笔记day09

break和continue的区别:break是结束本层循环或用于switch语句中,结束当前case;continue结束这一次循环for(inti=0;i<9;i++){System.out.println(i+"---------"); break;}第一次循环就结束了;for(inti=0;i<9;i++){if(i=5){ continue; } System.out.pri 查看详情

python全栈100天学习笔记day32linux概述及基础命令(代码片段)

Linux概述Linux是一个通用操作系统。一个操作系统要负责任务调度、内存分配、处理外围设备I/O等操作。操作系统通常由内核(运行其他程序,管理像磁盘、打印机等硬件设备的核心程序)和系统程序(设备驱动、... 查看详情