• 记录下三种排序,冒泡,选择,和快速。


    package test;
     
    import java.util.Arrays;
     
    public class T1 {
        public static void main(String[] args) {
            int[] a = { 5, 5, 3, 9, 4, 0, 6, 1, 8, 7 };
            sort1(a);
            sort2(a);
            sort3(a);
            System.out.println(Arrays.toString(a));
     
        }
     
        // 冒泡排序
        public static void sort1(int[] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a.length - 1 - i; j++) {
                    if (a[j] > a[j + 1]) {
                        int tmp = a[j + 1];
                        a[j + 1] = a[j];
                        a[j] = tmp;
                    }
                }
            }
        }
     
        // 选择排序
        public static void sort2(int[] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = i + 1; j < a.length; j++) {
                    if (a[i] > a[j]) {
                        int tmp = a[j];
                        a[j] = a[i];
                        a[i] = tmp;
                    }
                }
            }
        }
     
        // 快速排序
        public static void sort3(int[] a) {
            quick(a, 0, a.length - 1);
        }
     
        public static void quick(int[] a, int i, int j) {
            int s = i, e = j;
            if (s >= e) {
                return;
            }
            int m = a[i];
            while (i < j) {
                while (i < j && m < a[j]) {
                    j--;
                }
                a[i] = a[j];
                while (i < j && m >= a[i]) {
                    i++;
                }
                a[j] = a[i];
            }
            a[i] = m;
            quick(a, s, i - 1);
            quick(a, i + 1, e);
     
        }
     
    }

    快速排序​

    快速排序算法通过多次比较和交换来实现排序,其排序流程如下: 
    (1)首先设定一个分界值,通过该分界值将数组分成左右两部
    (2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值
    (3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理
    (4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了

    冒泡排序

    选择排序

     

  • 相关阅读:
    Spark RDD操作(1)
    scala学习笔记(8): 列表的map,flatMap,zip和reduce
    (转)hadoop基本操作命令
    Mac下配置环境变量
    Spark快速入门(1)
    urllib2 request 模拟伪装浏览器
    linux下面Zookeeper的单机模式(standalone)
    linux redis安装
    python OCR 图形识别
    mysql 、慢查询、到底如何玩
  • 原文地址:https://www.cnblogs.com/ENU7/p/16154358.html
Copyright © 2020-2023  润新知