Java实现直接插入排序

来源:互联网 发布:主流机械设计软件 编辑:程序博客网 时间:2024/06/05 18:55

直接插入排序思路很简单:依次将待排序的数据元素按其关键字值大小插入前面的有序序列。


public class InsertSort {public static void main(String[] args) {int[] data = new int[] { 9, -16, 21, 23, -30, -47, 21, 30, 13 };printArray(data);insertSort(data);printArray(data);}public static void printArray(int[] data) {System.out.print("[");for (int i = 0; i < data.length; i++) {if (i != data.length - 1) {System.out.print(data[i] + ",");} else {System.out.println(data[i] + "]");}}}public static void insertSort(int[] data) {for (int i = 1; i < data.length; i++) {
//用一个临时值记录data[i],保证在整体后移的时候data[i]的值不会丢失。int temp = data[i];
//i角标处的值已经比前面所有的值都大,表明已经有序,无需插入
//(i-1)索引之前的数据已经是有序的,i-1索引处的元素的值就是最大值if (data[i] - data[i - 1] < 0) {int j = i - 1;for (j = i - 1; j >= 0 && data[j] - temp > 0; j--) {data[j + 1] = data[j];}data[j + 1] = temp;}}}}
[9,-16,21,23,-30,-47,21,30,13][-47,-30,-16,9,13,21,21,23,30]
原创粉丝点击