java排序之插入排序

插入排序     

学数据结构时插入排序的原理是明白的,但是想要把脑子里的东西转化为代码实在是一件困难的事,好在参考了好多道友的代码自己又在编译器上重新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)

稳定

猜你喜欢

转载自blog.csdn.net/xpdbaba/article/details/79823439