• Java中的基础排序算法(三):冒泡排序、快速排序


    参考文章:https://mp.weixin.qq.com/s/VjqZNPg6dAEReAzqZcb_yw

    原文链接:www.jianshu.com/p/5e171281a387

    5.冒泡排序 —— 一般不用。

    1. 将序列中所有元素两两比较,将最大的放在最后面。

    2. 将剩余序列中所有元素两两比较,将最大的放在最后面。

    3. 重复第二步,直到只剩下一个数。

    如何写成代码:

    1. 设置循环次数。

    2. 设置开始比较的位数,和结束的位数。

    3. 两两比较,将最小的放到前面去。

    4. 重复2、3步,直到循环次数完毕。

    public void bubbleSort(int[] a){
            int length=a.length;
            int temp;
            for(int i=0;i<a.length;i++){
                for(int j=0;j<a.length-i-1;j++){
                    if(a[j]>a[j+1]){
                        temp=a[j];
                        a[j]=a[j+1];
                        a[j+1]=temp;
                    }
                }
            }
        }

    6.快速排序 —— 要求时间最快时。

    1. 选择第一个数为p,小于p的数放在左边,大于p的数放在右边。

    2. 递归的将p左边和右边的数都按照第一步进行,直到不能递归。

    public static void quickSort(int[] numbers, int start, int end) {
        if (start < end) {
            int base = numbers[start]; // 选定的基准值(第一个数值作为基准值)
            int temp; // 记录临时中间值
            int i = start, j = end;
            do {
                while ((numbers[i] < base) && (i < end))
                    i++;
                while ((numbers[j] > base) && (j > start))
                    j--;
                if (i <= j) {
                    temp = numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = temp;
                    i++;
                    j--;
                }
            } while (i <= j);
            if (start < j)
                quickSort(numbers, start, j);
            if (end > i)
                quickSort(numbers, i, end);
        }
    }
  • 相关阅读:
    离开学校一年多
    ZOJ Problem Set–1337 Pi
    Old Bill
    ZOJ Problem Set–1382 A Simple Task
    ZOJ Problem Set 2975 Kinds of Fuwas
    ZOJ Problem Set 2952 Find All M^N Please
    Generate Passwords
    Java 数据类型转换之字符串
    ZOJ Problem Set 2987 Misspelling
    Digital Roots
  • 原文地址:https://www.cnblogs.com/lotuses/p/11640686.html
Copyright © 2020-2023  润新知