2、java代码
public class InsertSort
{
public void insertSort(int[] a)
{
for(int j=1;j<a.length;j++)
{
int temp=a[j],i=j;
while(i>=1&&a[i-1]>temp)
{
a[i]=a[i-1];
i--;
}
a[i]=temp;
}
}
public static void main(String[] args)
{
int[] a=new int[]{3,5,6,4,1,2};
InsertSort sort=new InsertSort();
sort.insertSort(a);
}
}
3、时间复杂度分析
函数内部包含一个for循环,循环次数跟数组的长度n一样,循环内部的 int temp=a[j],i=j;和 a[i]=temp;为基础语句,执行时间为常量a,执行次数为n。主要就看for循环内部的while部分,while内部的语句a[i]=a[i-1];和i--;为基础语句,执行时间为常量a,就看执行次数了。while的执行次数由j和数组中元素的排列顺序控制,分三种情况: