Java中冒泡、选择排序算法及二分法查找代码

Mr.Bai 1,207 浏览 0

相关文章推荐,建议看

数据结构经典九大算法笔记

5年前 (2019-11-04) 5
数据结构经典九大算法笔记

冒泡排序

        int[] arr={8,9,4,1,15,10,11,0,5,3};
        int count=0;
        //统计比较次数,非必须
        int count2=0;
        //统计交换次数,非必须
        for (int i = arr.length-1; i >0 ; i--) {
            //在数组下标下减一
            for (int j = 0; j < i; j++){
                count++;
                //统计循环次数
                if (arr[j] > arr[j + 1]) {
                    //交换位置操作
                    int temp;
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    count2++;
                }
            }
        }

选择排序

        int[] arr={8,9,4,1,15,10,11,0,5,3};
        int count=0;
        //统计比较次数
        int count2=0;
        //统计交换次数
        for (int i = 0; i < arr.length-1; i++) {
            int min=i;
            //最小的一个
            for (int j = i+1; j < arr.length; j++) {
                count++;
                //比次数
                if(arr[j]<arr[min]){
                    min=j;
                }
                if (i != min) {
                    int temp;
                    //临时变量
                    temp=arr[min];
                    arr[min]=arr[i];
                    arr[i]=temp;
                    count2++;
                    //交换次数
                }
            }
        }

二分法查找(折半查找)

本算法基于排序的基础上使用

/**
     * 折半查找
     * @param arrays 要被查找的目标列表
     * @param dest 要被查找的目标
     * @return 查找成功返回索引,失败则返回-1
     */
    public static int arraySeach(int[] ararys, int dest) {
        //开始下标
        int begin=0;
        //结束下标
        int end=arrays.length-1;
        //中间数
        while(begin<=end) {
            int mid = (begin+end) / 2;

            if (arrys[mid] == dest) {
                return mid;
            } else if (arrays[mid] < dest) {
                begin = mid + 1;
            } else {
                end = mid - 1;
            }
        }
        return -1;
    }

Java中冒泡、选择排序算法及二分法查找代码

普通查找

/**
     * @param arr 传入要查找的数组
     * @param dest 被查询的目标
     * @return 返回被查询目标的索引,找不到则不返回
     */
    public static int arrayFind(int[] arr, int dest) {
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==dest){
                return i;
            }
        }
        return -1;
    }

发表评论 取消回复
表情 图片 链接 代码

分享
请选择语言