插入排序
学数据结构时插入排序的原理是明白的,但是想要把脑子里的东西转化为代码实在是一件困难的事,好在参考了好多道友的代码自己又在编译器上重新code了一下,加深了印象。
具体步骤不再详细说明,有兴趣大家可以再搜索一下,下面这个图我觉得非常直观,我当时看了这个图就感觉一下神清气爽
好了,具体代码如下
public class charu {
public static void main(String[] args) {
int a[]= {2,6,8,4,1,16,24,12};
int b[]=insertsort(a);
print(b);
}
public static int[] insertsort(int a[]) {
int n=a.length;
int j;
for(int i=1;i<n;i++) {
int temp=a[i];//temp相当于暂存需要插入的数字的空间
for( j=i;j>0;j--) {
if(a[j-1]>temp) {
a[j]=a[j-1];//将所有在a[i]之前的大于a[i]的值都往后移一位
}
else break;
}
a[j]=temp;//后移过程中,将j位置恰好空余出来安插temp
}
return a;
}
public static void print(int a[]) {
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+" ");
}
}
}
时间复杂度:O(n^2).
空间复杂度:O(1)
稳定