常见排序算法(二) 插入排序

2018-10-26  本文已影响0人  资深养猪大户

1、直接插入排序

public class InsertSort
{
    public static void insertSort(int[] arr)
    {
        for(int i = 1; i < arr.length; i++)
        {
            int temp = arr[i];
            for(int j = i; j >= 0; j--)
            {
               //往前比较,如果比i位大就后移一位
                if(j > 0 && arr[j-1] > temp)
                {
                    arr[j] = arr[j-1];
                }
                else
                {
                    arr[j] = temp;
                    break;
                }
            }
        }
    }
    public static void main(String[] args)
    {
        int[] array = new int[]{22,44,77,88,189,22,22,35,666,33,99,66};
        insertSort(array);
        for(int i = 0; i<array.length;i++)
        {
            System.out.println(array[i]);
        }
    }
}

2、希尔排序

public class ShellSort
{
    public static void shellSort(int[] arr) {
        int gap = arr.length/2;
        for (; gap > 0; gap /= 2) {
            for (int i = 0; i + gap < arr.length; i++)
                for (int j = i; j + gap < arr.length; j+=gap) {
                    if (arr[j] > arr[j + gap]) {
                        int temp = arr[j];
                        arr[j] = arr[j + gap];
                        arr[j + gap] = temp;
                    }
                }
            }
        }
    }
    public static void main(String[] args)
    {
        int[] array = new int[]{22,44,77,88,189,22,22,35,666,33,99,66};
        shellSort(array);
        for(int i = 0; i<array.length;i++)
        {
            System.out.println(array[i]);
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读