您的位置:首页 > 其它

插入排序-直接插入排序

2017-09-06 16:13 253 查看

1、概念

直接插入排序:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。



2、算法

public static void insertSort(int[] arr) {
int length = arr.length;

int j, temp;
//对整个数组进行检查
for (int i = 1; i < length; i++) {
temp = arr[i];
j = i - 1;

//当前数与之前已排序数比较,如果小则向前移位查找
while (j >= 0 && temp < arr[j]) {
arr[j + 1] = arr[j];
j--;
}

//找到位置并插入
arr[j + 1] = temp;

//输出结果过程
System.out.print(i + "times: ");
for (int k = 0; k < length; k++) {
System.out.print(arr[k] + "  ");
}
System.out.println();
}
}


结果:

source: 8  3  6  5  9  4  10  7  1  2

1times: 3  8  6  5  9  4  10  7  1  2
2times: 3  6  8  5  9  4  10  7  1  2
3times: 3  5  6  8  9  4  10  7  1  2
4times: 3  5  6  8  9  4  10  7  1  2
5times: 3  4  5  6  8  9  10  7  1  2
6times: 3  4  5  6  8  9  10  7  1  2
7times: 3  4  5  6  7  8  9  10  1  2
8times: 1  3  4  5  6  7  8  9  10  2
9times: 1  2  3  4  5  6  7  8  9  10


如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的,其时间复杂度O(n^2)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: