一般的なJavaクラス - 配列のソート、バイナリ検索

アレイ(配列)クラス

1、配列(アレイ)クラス

  • 操作のためのツールの配列
  • それは一種の発見する機能を提供します

方法の2、メンバー

  • public static String toString(int[] a)
  • public static void sort(int[] a)
  • public static int binarySearch(int[] a,int key)

第二に、配列をソート

1、バブルソート

  • 任意の二つの隣接する要素、初めて次の大きなリリースは、完成された、最大の指数で最大
    ここに画像を挿入説明

コードのバブルソートの配列:

package shuzu;

public class ArrayDm {
    public static void main(String[] args){
        int[] arr = {90,12,54,3,76,15};//定义一个数组
        System.out.println("数组排序前:");
        printArray(arr);

        bubbleSort(arr);
        System.out.println("排序后:");
        printArray(arr);
    }

    public static void bubbleSort(int[] arr) {
         for (int i = 0; i < arr.length -1; i++){
             for (int j = 0; j < arr.length - 1 - i; j++){
                 if (arr[j] > arr[j + 1]){
                     int temp = arr[j];
                     arr[j] = arr[j + 1];
                     arr[j + 1] = temp;
                 }
             }
         }
    }

    public static void printArray(int[] arr) {
        System.out.println("[");
        for (int i = 0; i < arr.length; i++){
            if(i == arr.length - 1){
                System.out.println(arr[i]);
            }else{
                System.out.println(arr[i] + ",");
            }
        }
    }
}

2、ソートする文字列

package shuzu;

public class ArrayDm {
    public static void main(String[] args) {
        String s = "fdeacbg";//定义一个字符串
        char[] arr = s.toCharArray();//把字符串转换成数组
        paixu(arr);//把字符数组进行排序
        String result = String.valueOf(arr);//把排序后的字符数组转成字符串
        System.out.println(result);//输出字符串;
    }

    private static void paixu(char[] arr) {//冒泡排序
        for (int i = 0; i < arr.length - 1; i++){
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    char temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

並べ替えを選択します

  • 0インデックスから、そして初めて、前方の比較的小さなプットの要素を元に戻すには、最小のインデックスの最小を完了しました

ここに画像を挿入説明

package shuzu;

public class ArrayDm {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = { 24, 69, 80, 57, 13 };
        System.out.println("排序前:");
        printArray(arr);

        //用方法改进
        selectSort(arr);
        System.out.println("排序后:");
        printArray(arr);

    }

    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[y] <arr[x]){
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
    }

    // 遍历功能
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ", ");
            }
        }
        System.out.println("]");
    }
}

第三に、配列検索

1、バイナリ検索
ここに画像を挿入説明

package shuzu;

public class ArrayDm {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {11, 22, 33, 44, 55, 66, 77};

        //写功能实现
        int index = getIndex(arr, 33);
        System.out.println("index:" + index);

        //假如这个元素不存在后有什么现象呢?
        index = getIndex(arr, 333);
        System.out.println("index:" + index);
    }

    /*
     * 两个明确:
     * 返回值类型:int
     * 参数列表:int[] arr,int value
     */
    public static int getIndex(int[] arr, int value) {
        //定义最大索引,最小索引
        int max = arr.length - 1;
        int min = 0;

        //计算出中间索引
        int mid = (max + min) / 2;

        //拿中间索引的值和要查找的值进行比较
        while (arr[mid] != value) {
            if (arr[mid] > value) {
                max = mid - 1;
            } else if (arr[mid] < value) {
                min = mid + 1;
            }

            //加入判断,返回-1说明找不到
            if (min > max) {
                return -1;
            }

            mid = (max + min) / 2;
        }

        return mid;
    }
}

直接Javaのバイナリ検索ツールを呼び出します

package shuzu;

import java.util.Arrays;//直接调用Java工具类

public class ArrayDm {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = { 24, 69, 80, 57, 13 };

        //System.out.println(Arrays.toString(arr));

        // public static String toString(int[] a) 把数组转成字符串
        System.out.println("排序前:" + Arrays.toString(arr));

        // public static void sort(int[] a) 对数组进行排序
        Arrays.sort(arr);
        System.out.println("排序后:" + Arrays.toString(arr));

        // [13, 24, 57, 69, 80]
        // public static int binarySearch(int[] a,int key) 二分查找
        System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57));
        System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));
    }
}

おすすめ

転載: blog.csdn.net/weixin_43860260/article/details/91353260