冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处,第二次比较厚,最大值放在了倒数第二的位置,一直到第二个元素确定了,整个数组的顺序也就确定了

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):在数组中进行二分查找

java基础11天的更多相关文章

  1. java基础(11) -JDBC

    java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...

  2. 【java基础 11】java集合框架学习

    导读:本篇博客主要是从整体上了解java的集合框架,然后主要介绍几个自己在项目中用到的结构,比如说:hashtable.hashmap.hashset.arraylist等! 一.宏观预览 从宏观上看 ...

  3. java基础(11):接口、多态

    1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...

  4. Java基础11 对象引用

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992484.html 作者:Vamei 出处:http://www.cnblogs.com ...

  5. Java基础11:Java泛型详解

    本文对java的泛型的概念和使用做了详尽的介绍. 本文参考https://blog.csdn.net/s10461/article/details/53941091 具体代码在我的GitHub中可以找 ...

  6. Java基础11 对象引用(转载)

    对象引用 我们沿用之前定义的Human类,并有一个Test类:  public class Test{    public static void main(String[] args){       ...

  7. java基础11(IO流)-字符流

    转换流 由于字节流操作中文不是特别方便,所以java中提供了转换流 编码表:由现实世界的字符和对应的数值组成的一张表 编码:把看得懂的变成看不懂的(String-------byte[]) 解码:把看 ...

  8. Java基础11一常用类

    1.包装类 byte---java.lang.Byte char---java.lang.Character short—java.lang.Short int---java.lang.Integer ...

  9. java基础(11)--封装

    一.java面向对象三大特别: 1.封装 2.继承 3.多态   二.封装的作用 1.属性私有化(private) 2.对外提供简单的入口 如公开的set()与get()方法,并且都不带static ...

随机推荐

  1. wget全站抓取命令

    wget -r -p -np -k http://www.freebuf.com/ 忽视,避开robots.txt,加一个-e robots=off 用wget避开robots.txt的下载限制 wg ...

  2. GBDT XGBOOST的区别与联系

    Xgboost是GB算法的高效实现,xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear). 传统GBDT以CART作为基分类器,xgboost还支持线性分 ...

  3. python + unittest 做单元测试之学习笔记

    单元测试在保证开发效率.可维护性和软件质量等方面有很重要的地位,所谓的单元测试,就是对一个类,一个模块或者一个函数进行正确性检测的一种测试方式. 这里主要是就应用 python + unitest 做 ...

  4. 关于Oracle误操作--数据被Commit后的数据回退恢复(闪回)

    今天操作Oracle数据库时,做一个Update数据时,不小心少写了个where,看这粗心大意的. 于是乎,把所有的员工工号都给更新成一个同一个工号了.这是一个悲催的故事. 因为工号是Check了好多 ...

  5. centos7 lua安装

    yum -y install gcc automake autoconf libtool makeyum install readline-develcurl -R -O http://www.lua ...

  6. 表单验证—js循环所有表单验证

    [封装为表单验证的专用js,所有表单页面都可以调用] 1.表单 <form id="regForm" method="post" action=" ...

  7. Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

    今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都 ...

  8. 2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final 2017) Solution

    A:Chat Group 题意:给出一个n, k 计算C(n, k) -> C(n,n) 的和 思路:k只有1e5 反过来想,用总的(2^ n) 减去 C(n, 0) -> C(n, k ...

  9. SQL: coalesce()函数

    ①用途: 将空值替换成其他值 返回第一个非空值 ②表达式: COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达 ...

  10. 向Oracle 数据表中插入一条带有日期类型的数据

    有一张表:batch(批次表) 表的字段如下: 第一种情况: 现在需要插入一条当前的系统时间 sql 如下: insert into batch (batch_id, cus_id, batch_nu ...