Discuss / Java / 打卡

打卡

Topic source

YG嘿嘿

#1 Created at ... [Delete] [Delete and Lock User]
public static void main(String[] args) {
    int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
    System.out.println(Arrays.toString(ns));
    isRight(sort(ns), "ArraySort ");
    isRight(bubbleSort(ns), "bubbleSort ");
    isRight(insertSort(ns), "insertSort ");
    quickSort(ns, 0, 9);
}
private static int[] sort(int[] ns) {
    Arrays.sort(ns);
    for (int i = 0; i < ns.length / 2; i++) {
        int temp = ns[i];
        ns[i] = ns[ns.length - 1 - i];
        ns[ns.length - 1 - i] = temp;
    }
    return ns;
}
//插入排序
private static int[] bubbleSort(int[] ns) {
    int temp = 0;
    for (int i = 0; i < ns.length - 1; i++) {
        //一次将一个最大值排到后面        for (int j = 0; j < ns.length - 1 - i; j++) {
            if (ns[j] < ns[j + 1]) {
                temp = ns[j];
                ns[j] = ns[j + 1];
                ns[j + 1] = temp;
            }
        }
    }
    return ns;
}
//插入排序
private static int[] insertSort(int[] ns) {
    for (int i = 1; i < ns.length; i++) {
        int temp = ns[i];
        for (int j = i - 1; j > 0; j--) {
            if (ns[j] < temp) {
                ns[j + 1] = ns[j];
                ns[j] = temp;
            } else {
                break;
            }
        }
    }
    return ns;
}
//快速排序
private static void quickSort(int[] ns, int low, int high) {
    int i, j, k, t;
    if (low > high) {
        return;
    }
    i = low;
    j = high;
    k = ns[low];//基准值    while (i < j) {
        while (ns[i] > k && i < j) {
            i++;
        }
        while (ns[j] < k && i < j) {
            j--;
        }
        if (i < j) {
            t = ns[i];
            ns[i] = ns[j];
            ns[j] = t;
        }
    }
    k = ns[i];
    ns[i] = ns[low];
    ns[low] = k;
    quickSort(ns, low, i - 1);
    quickSort(ns, i + 1, high);
    if (low == high) {
        isRight(ns,"quickSort ");
    }
}
private static void isRight(int[] ns,String sortName) {
    // 排序后:    System.out.println(Arrays.toString(ns));
    if (Arrays.toString(ns).equals("[96, 89, 73, 65, 50, 36, 28, 18, 12, 8]")) {
        System.out.println(sortName + "测试成功");
    } else {
        System.out.println(sortName + "测试失败");
    }
}

YG嘿嘿

#2 Created at ... [Delete] [Delete and Lock User]

快速排序,有些地方错了,下面是是真确的

private static void quickSort(int[] ns, int low, int high) {
    int i, j, k, t;
    if (low > high) {
        return;
    }
    i = low;
    j = high;
    k = ns[low];//基准值    while (i < j) {
        while (k >= ns[j] && i < j) {
            j--;
        }
        while (k <= ns[i] && i < j) {
            i++;
        }
        if (i < j) {
            t = ns[j];
            ns[j] = ns[i];
            ns[i] = t;
        }
    }
    k = ns[i];
    ns[i] = ns[low];
    ns[low] = k;
    quickSort(ns, low, i - 1);
    quickSort(ns, i + 1, high);
    if (low == high) {
        isRight(ns,"quickSort ");
    }
}

  • 1

Reply