• 数组查询和冒泡排序算法


    package com.xxx.xxx;
    
    import java.util.Arrays;
    
    public class demo10 {
    
        /**
         * 1、数组查询
         * 2、冒泡数组排序
         * @param args
         */
        public static void main(String[] args) {
            //1、数组查询
            /**
             * binarySearch(Object a[],Object key) 用的时候要先进行排序,如果没排序,则返回的结果是不确定的
             * a 要搜索的数组
             * key 要搜索的值    (如果key包含在数组中、则返回搜索值的索引、否则返回-1或“-”【插入点】)
             */
            int arr4[] = new int[]{23,45,44,75,14,45};    //定义数组
            Arrays.sort(arr4);    //进行排序
            int index = Arrays.binarySearch(arr4,14);    //搜索 14 的位置,排序后的索引是 0
            System.out.println("14的索引位置是:"+index);    //输出
    
            //1.1、数组排序2
            /**
             * binarySearch(Object [].a,int fromIndex,int toIndex,Object key)
             * a 要进行检索的数组
             * fromIndex 指定范围的开始处索引(包含)
             * toIndex 指定范围的结束索引(不包含)
             * key 要搜索的值
             */
            String str[] = new String[]{"ab","cd","ef","gh"};    //定义数组
            Arrays.sort(str);    //进行排序
            int index1 = Arrays.binarySearch(str,0,2,"cd");    //搜索 14 的位置,排序后的索引是 0
            System.out.println("cd的索引位置是:"+index1);    //输出
    
            System.out.println("---------------------");
            //2、 数组排序
            //2.1、冒泡排序
            /**
             * 0、小数往前放,大数往后放
             * 1、冒泡算法是由双层循环实现,其中外层循环用于控制排序轮数,一般为数组的长度-1
             * 因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序
             * 2、内层循环主要用于对比数组中每个临近元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少
             */
            int[] array = {63,4,24,1,3,15};    //创建数组是乱序的
            for(int i=0;i<array.length;i++){
                //比较相邻两个元素,较大的往后冒泡
                for(int j=0;j<array.length-1;j++){
                    if(array[j] > array[j+1]){    //if判断
                        int temp = array[j];    //把第一个元素的值保存在临时变量中
                        array[j] = array[j+1]; //把第二个元素保存在第一个元素中
                        array[j+1] = temp;         //把临时变量(也就是第一个元素的值)保存在第二个元素中
                    }
                }
            }
            //遍历数组输出
            for(int i : array){
                System.out.print(">"+i);
            }
    
            System.out.println("---------------------");
            
        }
    
    }
  • 相关阅读:
    AC日记——[ZJOI2012]网络 bzoj 2816
    [USACO08FEB]酒店Hotel 线段树
    divisors 数学
    Count on a tree 树上主席树
    STL备忘
    [TJOI2013]松鼠聚会 曼哈顿距离
    斐波那契数列 矩阵乘法优化DP
    [TJOI2013]奖学金 乱搞
    铁轨 清北学堂 线段树
    P3939 数颜色 线段树动态开点
  • 原文地址:https://www.cnblogs.com/spadd/p/4164594.html
Copyright © 2020-2023  润新知