插入排序

来源:互联网 发布:蜜蜂软件怎么注册 编辑:程序博客网 时间:2024/06/17 22:03
public class Test {
public static void insertionSort(int[] source) {
for(int i=0;i<source.length;i++){
for(int j=i;j>0;j--){
if(source[j]<source[j-1]){
swap(source,j,j-1);
}
}
}
}


private static void swap(int[] source, int x, int y) {
int temp =source[x];
source[x] = source[y];
source[y] = temp;
}


public static void main(String[] args) {
int[] a={4,2,1,6,3,6,0,-5,1,1};
insertionSort(a);
for(int i=0;i<10;i++){
System.out.println(a[i]);
}
}

}

一般来说,插入排序采用in-place在数组上实现。具体算法描述如下:

1.从第一个元素开始,该元素可以认为已经被排序。

2.取出下一个元素,在已经排序的元素序列中从后面向前扫描。

3.如果该元素(已排序)大于新元素,则将该元素移到下一位置

4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

5.将元素插入到该位置中。

6.重复步骤2.

插入排序 最差、平均时间复杂度都是o(n^2),稳定的排序,空间复杂度是1

0 0
原创粉丝点击