Java常见算法


选择排序

代码

    //对数组进行 '升序' 排列
    private static void sortChoose(int[] arr) {
        for (int x = 0; x < arr.length; x++) {
            for (int y = x + 1; y < arr.length; y++) {
                if (arr[x] > arr[y]) { //控制 升序 or 降序
                    //临时获取:两个数中的最大值
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
    }
    }

原理说明:0索引和后续的索引比较、1索引和后续的索引比较......首次循环,可以得出 最小值 或 最大值。

冒泡排序

代码

    //对数组进行 '升序' 排列
    private static void sortBubble(int[] arr) {
        for (int x = 0; x < arr.length; x++) {
            for (int y = 0; y < arr.length - x - 1; y++) {
                if (arr[y] > arr[y + 1]) { //控制 升序 or 降序
                    //临时获取:两个数中的最大值
                    int temp = arr[y]; 
                    arr[y] = arr[y + 1];
                    arr[y + 1] = temp;
                }
            }
        }
    }

原理说明:相邻的两个元素比较,位置互换。首次循环,可以得出 最小值 或 最大值。

二分/折半 查找

代码

    //参数arr:有序数组; 参数key:需要查找的元素
    private static int binarySearch(int[] arr, int key) {
        int index = -1;
        //定义三个变量,保存数组的最小、中间、最大的索引
        int min = 0, mid = 0, max = arr.length - 1;
        //循环的条件:小索引<=大索引
        while (min <= max) {
            mid = (min + max) / 2;
            if (arr[mid] < key) {
                min = mid + 1;
            } else if (arr[mid] > key) {
                max = mid - 1;
            } else {
                index = mid;
                break;
            }
        }
        return index;
    }

说明:使用:二分/折半 查找某个元素,若存在-则返回元素在数组里面的索引;若不存在-则返回-1。
特别注意:若需要查找的数组是无序的,切记:不可使用二分/折半查找,更不要数组进行排序(排序会导致数组元素的索引变更)!

优质内容筛选与推荐>>
1、线程调用
2、POJ 1183 反正切函数的应用 (推公式)
3、组合数
4、Linux平台搭建roboframework
5、centOS 7 kibana安装配置


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号