两种插入排序算法java实现

Posted Constructor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两种插入排序算法java实现相关的知识,希望对你有一定的参考价值。

两种方法都编译运行通过,可以当做排序类直接使用。

折半插入排序:

public class Sort1 {
    public static void main(String[] args) {
        InsertSort sort = new InsertSort();
        sort.InsertSort();
        int[] arr = sort.getarr();
        System.out.println();
        System.out.println("排序之后:");
        for (int ar : arr) {
            System.out.print(ar + " ");
        }

    }
}

class InsertSort {
    int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1 };
    int i,high,low,mid;
    int temp;
  
    public int[] getarr() {
        return a;
    }

    public void InsertSort() {
        System.out.println("排序之前:");
        for (int m : a) {
            System.out.print(m + " ");
        }
        for(int i=1;i<a.length;i++)
        {
            temp=a[i];
            low = 0;
            high = i-1;
            while(low<=high)
            {
                mid = (low + high)/2;
                if (temp<a[mid])
                {
                    high = mid -1;
                }
                else
                {
                    low = mid +1;
                }
            }
            for(int j=i-1;j>=high+1;j--)
            {
                a[j+1] = a[j];
            }
               a[high+1] = temp;
        }
    }
}

 

直接插入排序:

public class Sort1 {
    public static void main(String[] args) {
        InsertSort sort = new InsertSort();
        sort.InsertSort();
        int[] arr = sort.getarr();
        System.out.println();
        System.out.println("排序之后:");
        for (int ar : arr) {
            System.out.print(ar + " ");
        }

    }
}

class InsertSort {
    int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1 };

    public int[] getarr() {
        return a;
    }

    public void InsertSort() {
        System.out.println("排序之前:");
        for (int m : a) {
            System.out.print(m + " ");
        }
        for (int i = 1; i < a.length; i++) {
            int temp = a[i];
            int j;
            for (j = i - 1; j >= 0 && a[j] > temp; j--) {
                a[j + 1] = a[j];
            }
            a[j + 1] = temp;
        }
    }
}

以上是关于两种插入排序算法java实现的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之冒泡选择插入排序(Java)

排序算法之冒泡选择插入排序(Java)

常用排序算法及java语言实现

Java常用的八种排序算法与代码实现

常见的七种排序算法(Java实现)

常见的七种排序算法(Java实现)