输入: n个数<a1, a2, ..., an>
输出:输入序列的一个排列(即重新排序)<a1', a2', ..., an'>,使得a1' <= a2' <= ... <= an'
伪代码就不在赘述,详细见算法导论书第二版
用java代码实现如下
public class InsertionSort {
public static void insert(Integer[] input) {
for(int i = 1; i < input.length; i ++) {
int current = input[i];
//把current插入到input[0...i-1]中
int j = i - 1;
while((j >= 0) && input[j] > current ) {
input[j + 1] = input[j];
j = j -1;
}
input[j + 1] = current;
}
for(int i = 0; i < input.length; i ++) {
System.out.println(input[i] + ", ");
}
}
public static void main(String[] args) {
Integer[] input = new Integer[]{
3,5,7,1,6,9,4,2,8
};
insert(input);
}
}
算法复杂度:O(n2)
本文介绍了一种简单的排序算法——插入排序,并提供了详细的Java实现代码。该算法通过将序列中的元素逐步插入到已排序的部分来达到排序的目的。文章还分析了算法的时间复杂度为O(n²)。
590

被折叠的 条评论
为什么被折叠?



