插入排序是一种简单且稳定的算法,适用于已排好序的序列,往其余插入某个元素,保证数据有序。 算法
能够想一下扑克牌,假如你先拿到牌1,5,9 而后你又起了一个8这时候你须要和1,5,9比较而后把8插入到5,9的中间让它成为有序的1,5,8,9 详细看下面动图。 在数组的操做中,因为数组并不像手那么灵活,每次插入操做都须要移动元素。 数组
public void insertSort(int a[]){
for(int i=1;i<a.length;i++){
//和前面的依次比较
for(int j=i;j>0;j--){
if(a[j]<a[j-1]){
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
复制代码
空间复杂度O(1) 时间复杂度外层循环n次 内层循环(1+2+3+....+i+....+n)因此复杂度是n的平放 最优的时间复杂度O(n)bash
相同的两个元素不存在相对顺序的互换好比4,3,5,7,3 第一个三会插入到4的前面,第二个三并不会受第一个三顺序的影响spa
归并排序详解code
快速排序详解cdn
选择排序详解blog