插入排序法(Java实现)

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+" ");
	}
}


你可能感兴趣的:(java,排序,插入法)