插入排序算法

定义

插入排序就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序时间复杂度为 O(n^2) ,是稳定的排序方法。

插入排序的基本思想:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

例题

随意定义十个数字的数组 int[] numbers = {12,45,5,6,78,101,91,54,65,10}。

分析:
第一趟: [12] {45,5,6,78,101,91,54,65,10}
第二趟: [12,45] {5,6,78,101,91,54,65,10}
第三趟: [5,12,45] {6,78,101,91,54,65,10}
…..
第(N-2)趟: [ 5 6 10 12 45 54 65 78 91 101 ]
(其中每一个数需要对已经排序数据的最小值开始比较,直到比较到最大值,比较到合适位置就直接插入,直到全部插完)

/*
 * 插入排序算法
 * */
public class InsertionSort {

    public static void main(String[] args) {
        //随意定义十个数
        int[] numbers = {12,45,5,6,78,101,91,54,65,10};
        //比较n-2趟
        for (int i = 0; i < numbers.length-1; i++) {
            for (int j = 0; j <= i; j++) {
                //把numbers[i+1]和每一个数比较,其中包括了交换
                if(numbers[i+1] < numbers[j]){
                    int temp = numbers[i+1];
                    numbers[i+1] = numbers[j];
                    numbers[j] = temp;
                }
            }
        }
        //循环输出排序好的数据
        for (int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i]+"\t");
        }

    }

}

后续持续更新其它算法…

你可能感兴趣的:(java)