排序由哪几种方法?用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  杜嘟嘟  阅读(32)  评论(0)    收藏  举报