public class InsertSort { public static void main(String[] args) { //数组声明 int[] a = {5,1,3,0,1,4,-1}; int L = a.length; //首先确保前两个元素是升序的 if(a[1]<a[0]) { int tmp=a[0]; a[0]=a[1]; a[1]=tmp; } //其次进行插入排序 for(int i=2;i<L;i++) { //如果待插入的数小于或等于已排序的表头 if(a[i]<=a[0]) { int tmp=a[i]; for(int j=i;j>0;j--) { a[j]=a[j-1]; } a[0]=tmp; } //如果待插入的数大于或等于已排序的表尾 else if(a[i]>=a[i-1]) continue; //如果待插入的数介于已排序的表中某两个数中间 else { for(int k=0;k<i-1;k++) { if(a[i]>=a[k]&&a[i]<=a[k+1]) { int tmp1=a[i]; for(int m=i;m>k+1;m--) { a[m]=a[m-1]; } a[k+1]=tmp1; } } } } for(int element:a) System.out.println(element+" "); } }
时间: 2024-10-09 23:07:08