排序由哪几种方法?用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