排序由哪几种方法?用Java语言实现一个插入排序?

      常见的排序方法有选择排序,插入排序,冒泡排序,归并排序,快速排序,希尔排序和堆排序等。

      下面重点介绍插入排序。对于给定的一组记录,初始时设第一个记录自成一个有序序列,其余的记录为无序记录。接着从第二个记录开始,

按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。以数组{38,65,97,76,13,27,49}为例

直接插入排序具体步骤如下所示:

      第一步插入38以后,序列为:[38] 65 97 76 13 27 49

      第二步插入65以后,序列为:[38 65] 97 76 13 27 49

      第三步插入97以后,序列为:[38 65 97] 76 13 27 49

      第四步插入76以后,序列为:[38 65 76 97] 13 27 49

      第五步插入13以后,序列为:[13 38 65 76 97] 27 49 

      第六步插入27以后,序列为:[13 27 38 65 76 97] 49 

      第七步插入49以后,序列为:[13 27 38 49 65 76 97] 

      程序示例如下:

public class InsertSort {

    public static void insertSort(int[] a){
        if (a==null || a.length ==0) {
            return;
        }
        for (int i = 1; i < a.length; i++) {
            //把a[i]插入到a[0~i-1]的有序字列表中
            int temp = a[i],j = i;
            if (a[j - 1]>temp) {
                while (j >= 1 && a[j - 1] > temp) {
                    a[j] = a[j - 1];
                    j--;
                }
            }
            a[j] = temp;
        }
    }

    public static void main(String[] args) {
        int[] array = {7,3,19,40,4,7,1};
        insertSort(array);
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }
}

程序运行结果为 1 3 4 7 7 19 40 

posted @ 2022-01-08 18:29  杜嘟嘟  阅读(23)  评论(0编辑  收藏  举报