• java 数组排序 插入排序、快排法


    一、插入排序

    插入排序法思想:将n个数字分为前面几个是有序数字集合,后面几个为无序集合。当然尚未排序之前,可以将n0 看为有序数集合,N1-Nn-1 看为等待排序的无序集合。从N1开始将无序数一个一个插入到有序数集合中,使之再次成为有序数集合,当第Nn-1 个数字插入有序数集合中后。整个n数字集合便成为有序集合。

    示例:2,1,8,9,6,3,4,7,5

    第一步排序后结果:1,2,8,9,6,3,4,7,5

    第二步排序后结果:1,2,8,9,6,3,4,7,5

    第三步排序后结果:1,2,8,9,6,3,4,7,5

    第四步排序后结果:1,2,6,8,9,3,4,7,5

    第五步排序后结果:1,2,3,6,8,9,4,7,5

    第六步排序后结果:1,2,3,4,6,8,9,7,5

    第七步排序后结果:1,2,3,4,6,7,8,9,5

    第八步排序后结果:1,2,3,4,5,6,7,8,9

    示列代码:

     

     二、快排

    public static void main(String[] args) {
    int nums[] = {1, 3, 5, 7, 9, 0, 3, 8, 5, 6, 4, 2};
    int start = 0;
    int end = nums.length - 1;
    quicksort(nums, start, end);
    for (int i = 0; i < nums.length; i++) {
    System.out.print(nums[i]);
    }

    }

    static void quicksort(int[] nums, int start, int end) {
    if (start >= end) {
    return;
    }
    int startnum = nums[start];
    int i = start, y = end;
    while (i < y) {
    while (i < y && nums[y] >= startnum) {
    y--;
    }
    while (i < y && nums[i] <= startnum) {
    i++;
    }

    if (i >= y) {
    break;
    }
    int temp = nums[y];
    nums[y] = nums[i];
    nums[i] = temp;
    }
    nums[start] = nums[i];
    nums[i] = startnum;

    quicksort(nums, start, i - 1);
    quicksort(nums, i + 1, end);

    }
  • 相关阅读:
    POJ 1754 Splay
    POJ 3481Double Queue Splay
    前缀表达式求值
    Treap(树堆):随机平衡二叉树实现
    Tarjian算法求强联通分量
    (转)priority_queue的用法
    001Angular2环境准备
    9.富客户端应用程序的线程
    8.信号
    7.线程的优先级
  • 原文地址:https://www.cnblogs.com/prettrywork/p/10225392.html
Copyright © 2020-2023  润新知