美文网首页Java
java (查找和排序)

java (查找和排序)

作者: 夜沐下的星雨 | 来源:发表于2020-06-25 07:17 被阅读0次

1.查找

递归形式:

   public int binarySearch(int key,int arr[],int lo,int ht){
        if (ht<lo){return -1;}

        //获取中间下标
        int middle = lo+(lo+ht)/2;
            //对比key和中间数值
            if (key<arr[middle]){
                // 如果小于,说明key在数组的前半部分
                return binarySearch(key,arr,lo,middle-1);
            }else if(key>arr[middle]){
                // 如果大于,说明key在数组的后半部分
                return binarySearch(key,arr,middle+1,ht);
            }else{
                return middle;
            }

    }

二分查找:

  /**
     * @param arr 数据源
     * @param key 查找的数据
     * @return 在arr里的位置
     */
    private int halfSearch(int[] arr, int key) {
        int min, mid, max;
        min = 0;
        max = arr.length - 1;
        while (min <= max) {
            mid = (min + max) / 2;
            if (key > arr[mid]) {
                min = mid + 1;
            } else if (key < arr[mid]) {
                max = mid - 1;
            } else {
                return mid;
            }
        }
        return -1;
    }

2.排序方式

下面这个表格总结了各种排序算法的复杂度与稳定性:


冒泡排序

特点:相邻两个元素进行比较。内循环结束一次,最值出现在最后角标位。

    public static void bubbleSort(int[] arr)
    {
        for(int x=0; x<arr.length-1; x++)
        {
            for(int y=0; y<arr.length-x-1; y++)
            {
                if(arr[y]>arr[y+1])
                {
                    /*
                    int temp = arr[y];
                    arr[y] = arr[y+1];
                    arr[y+1] = temp;
                    */
                    swap(arr,y,y+1);
                }
            }
        }
    }

选择排序

特点:在内循环第一次结束,最值出现最低角标位。

    public static void  selectSort(int[] arr)
    {
        for(int x=0; x<arr.length-1; x++)
        {
            for(int y=x+1; y<arr.length; y++)
            {
                if(arr[x]<arr[y])
                {
                    /*
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                    */
                    swap(arr,x,y);
                }
            }
        }
    }

插入排序

   public int[] insertionSort(int [] arr) {
        int len = arr.length;
        int preIndex, current;
        for (int i = 1; i < len; i++) {
            preIndex = i - 1;
            current = arr[i];
            while (preIndex >= 0 && arr[preIndex] > current) {
                arr[preIndex + 1] = arr[preIndex];
                preIndex--;
            }
            arr[preIndex + 1] = current;
        }
        return arr;
    }

相关文章

  • 面试知识点

    排序冒泡排序快速排序选择排序插入排序二路归并 查找二分查找 排序和查找的java实现 java语言Java字符串字...

  • java (查找和排序)

    1.查找 递归形式: 二分查找: 2.排序方式 下面这个表格总结了各种排序算法的复杂度与稳定性: 冒泡排序 特点:...

  • Java实例-数组

    1、Java 实例 – 数组排序及元素查找:使用sort()方法对Java数组进行排序,使用 binarySear...

  • java排序和查找算法

    一、排序算法 二、查找算法

  • java实现冒泡排序、快速排序、二分查找算法

    用Java写一个冒泡排序。 用Java写一个二分查找。 用Java写一个快速排序。

  • Java 数组

    Java 实例 - 数组排序及元素查找 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 ...

  • 剑指Offer.C++.code6-10

    (1)排序和查找是面试考察算法的重点,如二分查找、归并排序、快速排序等;(2)查找:顺序查找、二分查找、哈希表查找...

  • 18-04-27  python3 算法笔记 003查找与排序

    查找: 顺序查找 二分查找 hash查找 排序: 冒泡排序 选择排序 插入排序希尔排序 归并排序 快速...

  • Java算法

    来咯来咯,这份超全Java算法整理它来咯!包含:二分查找、冒泡排序、插入排序、快速排序、希尔排序、归并排序、桶排序...

  • java循环/排序/查找

    一、循环、排序、查找基础练习 1.求1~100奇数和偶数的和 代码: 运行结果:28882181.png 2.求水...

网友评论

    本文标题:java (查找和排序)

    本文链接:https://www.haomeiwen.com/subject/ezwjfktx.html