- package methodOfSort;
- import java.util.Scanner;
- public class Insert {
- /*
- * 插入排序!
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner input=new Scanner(System.in);
- System.out.print("请输入数组长度?");
- int length=input.nextInt();
- int a[]=new int[length];
- for(int i=0;i<a.length;i++){
- System.out.print("请输入第"+ (i+1) +"个数的大小");
- a[i]=input.nextInt();
- }
- //* 数组初始排列顺序!
- System.out.println("数组初始排列顺序!");
- for(int i=0;i<a.length;i++){
- System.out.print(a[i]+" ");
- }
- /*
- * 插入排序!
- *
- * 插入法比较复杂,从第二个元素开始,在前面的牌中寻找相应的位置插入,
- * 然后继续下一张,当最后一个元素插入相应位置时,排序结束!
- */
- int temp;
- //从第二个数开始,与其前面的元素比较!
- for (int i = 1; i < a.length; i++)
- {
- for (int j = 0; j < i; j++)
- {
- /*循环遍历a[i]之前的元素,与a[i]比较,
- 当a[i]<=a[j]时,a[i]肯定大于a[j-1](如果存在a[i-1]的话)
- */
- if (a[i]<=a[j])
- {
- //a[i]占据a[j]的位置! 从j+1到i,元素依次由它前面的元素替代
- temp=a[i];
- for (int k = i; k >j; k--)
- {
- a[k]=a[k-1];
- }
- a[j] = temp;
- }
- }
- }
- //数组插入排序后顺序!
- System.out.println("\n插入后排序!");
- for(int i=0;i<a.length;i++){
- System.out.print(a[i]+" ");
- }
- }
- }