插入排序-Java

我与影子孤独终老i 提交于 2020-02-23 04:50:03
/**
 * @author cnkeysky
 */
public class DemoTest {

    public static void main(String[] args) {
        int[] arr = {-1, 9, 1, 4, 3, 10, 7, 0};
        System.out.println("排序前:");
        printArr(arr);
        insertionSort(arr);
        System.out.println("排序后:");
        printArr(arr);
    }

    public static void insertionSort(int[] arr) {
        int len = arr.length;
        for (int i = 1; i < len; ++i) {
            int aux = arr[i];
            int j = i;
            // 方式1 与前 i 个值进行比较(从后向前比较)
            for (; j > 0 && aux < arr[j - 1]; --j) {
                arr[j] = arr[j - 1];
            }
            // 方式2
            /*for (; j > 0; --j) {
                if (aux < arr[j - 1]) {
                    arr[j] = arr[j - 1];
                } else {
                    break;
                }
            }*/
            arr[j] = aux;
            System.out.printf("第 %d 次排序: ", i);
            printArr(arr);
        }
    }
    
    public static void printArr(int[] arr) {
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!