插入排序

插入排序

计算步骤
- 首先对数组的前两个数据进行从小到大排序。
- 接着将第三个数据与排好序的两个数据比较,将三个数据插入合适的位置。
- 然后,将第四个数据插入已排好序的前3个数据中。
- 不断重复上述过程,直到把最后一个数据插入合适的位置。最后,便完成了对原始数组从小到大的排序。

代码:

public class P4_3 {

    static final int SIZE = 10;

    public static void insertionSort(int[] a){
        int i,j,t,h;
        for (i = 1; i < a.length; i++) {
            t=a[i];
            j=i-1;
            while (j>=0 && t<a[j]){
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = t;


            System.out.print("第"+i+"步排序结果");

            for (int k = 0; k < a.length; k++) {
                System.out.print("  "+a[k]);
            }
            System.out.println();
        }
    }





    public static void main(String[] args) {
        int[] shuzu = new int[SIZE];
        for (int i = 0; i < SIZE; i++) {
            shuzu[i] = (int)(100 + Math.random()*(100+1));
        }
        //
        System.out.println("排序前数组为:");
        for (int i = 0; i < shuzu.length; i++) {
            System.out.print("  "+ shuzu[i]);
        }
        //
        System.out.println();
        insertionSort(shuzu);
        System.out.println("排序后数组为:");
        for (int i = 0; i < shuzu.length; i++) {
            System.out.print("  "+ shuzu[i]);
        }

    }
}

结果

排序前数组为:
  121  100  140  155  178  104  132  100  146  1521步排序结果  100  121  140  155  178  104  132  100  146  1522步排序结果  100  121  140  155  178  104  132  100  146  1523步排序结果  100  121  140  155  178  104  132  100  146  1524步排序结果  100  121  140  155  178  104  132  100  146  1525步排序结果  100  104  121  140  155  178  132  100  146  1526步排序结果  100  104  121  132  140  155  178  100  146  1527步排序结果  100  100  104  121  132  140  155  178  146  1528步排序结果  100  100  104  121  132  140  146  155  178  1529步排序结果  100  100  104  121  132  140  146  152  155  178
排序后数组为:
  100  100  104  121  132  140  146  152  155  178
Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值