java 插入排序
*********************
插入排序
算法描述:将无序数组中的元素按数值大小插入到有序队列,逐渐增大有序队列,直至全部插入完成
空间复杂度:只需要一个额外辅助空间,o(1)
平均时间复杂度:o(n^2)
算法稳定性:相同大小元素的相对位置在排序前后保持不变,插入排序是稳定算法
*********************
示例
public class MyTest {
public static int[] generate(int length){
int[] a=new int[length];
for (int i=0;i<=length-1;i++){
a[i]=new Random().nextInt(1000);
}
return a;
}
public static void insertSort(int[] a){
for (int i=1;i<a.length;i++){
int temp=a[i];
int j=i-1;
for (;j>=0&&a[j]>temp;j--){
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
public static void main(String[] args){
int[] a=generate(10);
System.out.println("插入排序前的数组为:");
Arrays.stream(a).forEach(i -> System.out.print(i+" "));
insertSort(a);
System.out.println("\n\n插入排序后的数组后:");
Arrays.stream(a).forEach(i -> System.out.print(i+" "));
}
}
控制台输出
插入排序前的数组为:
564 518 876 910 679 419 705 736 96 696
插入排序后的数组后:
96 419 518 564 679 696 705 736 876 910