数组查询和冒泡排序算法

本文深入探讨了数组查询和冒泡排序算法的应用,通过实例展示了如何使用Java中的Arrays类进行数组排序,并详细解释了二分查找算法的原理及使用方法。文章还介绍了冒泡排序的实现过程,包括其工作原理、代码实现以及排序效果展示。
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("---------------------");
        
    }

}

 

转载于:https://www.cnblogs.com/spadd/p/4164594.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值