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);
    }
}

 

posted @ 2019-10-09 11:23  一叶之灵  阅读(245)  评论(0编辑  收藏  举报