插入排序

/**
 * 插入排序法
 * 原理  打扑克牌  起牌的时候新上来一张牌,和之前的相比,找到合适的 位置放入
 */
public class Version {

    public static void main(String[] args) {
        for (int k = 0; k < 1000; k++) {
            int[] arr = PxUtils.newArr(10000);
//        System.out.println(Arrays.toString(arr));
            int[] arr1 = Arrays.copyOf(arr, arr.length);
            for (int i = 1; i < arr.length; i++) {
                //记录需要排序的数
                int temp = arr[i];
                int minPro = i;
                for (int j = i; j >0 ; j--) {
                    if (temp < arr[j-1]) {
                        //如果需要排序的数比之前拍好顺序前面的几个数比较,如果小,则让排好序的数往后放,记录一下排好序中比当前数大的最小数的位置
                        arr[j] = arr[j-1];
                        minPro = j-1;
//                        PxUtils.swap(arr,j,j-1);
                    }else {
                        break;
                    }
                }
                //将当前数复制给最小的位置
                arr[minPro]=temp;
//                System.out.println(Arrays.toString(arr));
            }
//            System.out.println(Arrays.toString(arr));
            Arrays.sort(arr1);
            boolean validate = PxUtils.validate(arr1, arr);
            if (!validate) {
                System.out.println(validate);

            }
        }

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章