zoukankan      html  css  js  c++  java
  • Bubble Sort

    向大端冒泡排序

    public class Bubble {
        /**
         * 向大端冒泡排序
         *
         * @param arr
         * @param <T>
         */
        public static <T extends Comparable<? super T>> void bubbleSort(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr.length - i - 1; j++) {
                    if (arr[j].compareTo(arr[j + 1]) > 0) {
                        swap(arr, j, j + 1);
                    }
                }
            }
        }
    
        public static void swap(Object[] arr, int i, int j) {
            Object temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    
        public static <T extends Comparable<? super T>> void printArray(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            Integer[] arr = {1, 5, 9, 7, 3, 10, 2, 8, 6, 4};
            bubbleSort(arr);
            printArray(arr);
        }
    }
    

      

    向小端冒泡排序

    public class Bubble {
        /**
         * 向小端冒泡排序
         *
         * @param arr
         * @param <T>
         */
        public static <T extends Comparable<? super T>> void bubbleSort(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                for (int j = arr.length - 1; j > 0; j--) {
                    if (arr[j].compareTo(arr[j - 1]) < 0) {
                        swap(arr, j - 1, j);
                    }
                }
            }
        }
    
        public static void swap(Object[] arr, int i, int j) {
            Object temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    
        public static <T extends Comparable<? super T>> void printArray(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            Integer[] arr = {1, 5, 9, 7, 3, 10, 2, 8, 6, 4};
            bubbleSort(arr);
            printArray(arr);
        }
    }
    

      

    鸡尾酒排序

    public class Bubble {
        /**
         * 鸡尾酒排序
         *
         * @param arr
         * @param <T>
         */
        public static <T extends Comparable<? super T>> void bubbleSort(T[] arr) {
            int low = 0;
            int high = arr.length - 1;
            while (low < high) {
                for (int i = low; i < high; i++) {
                    if (arr[i].compareTo(arr[i + 1]) > 0) {
                        swap(arr, i, i + 1);
                    }
                }
                high--;
                for (int j = high; j > low; j--) {
                    if (arr[j].compareTo(arr[j - 1]) < 0) {
                        swap(arr, j - 1, j);
                    }
                }
                low++;
            }
        }
    
        public static void swap(Object[] arr, int i, int j) {
            Object temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    
        public static <T extends Comparable<? super T>> void printArray(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            Integer[] arr = {5, 1, 9, 7, 3, 10, 2, 8, 6, 4};
            bubbleSort(arr);
            printArray(arr);
        }
    }  

    冒泡排序优化--标识符

    public class Bubble {
        /**
         * 冒泡排序优化--标记符
         *
         * @param arr
         * @param <T>
         */
        public static <T extends Comparable<? super T>> void bubbleSort(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                boolean flag = true;
                for (int j = 0; j < arr.length - i - 1; j++) {
                    if (arr[j].compareTo(arr[j + 1]) > 0) {
                        swap(arr, j, j + 1);
                        flag = false; //这层循环有交换
                    }
                }
                if (flag) {//可以退出循环了,已有序
                    break;
                }
            }
        }
    
        public static void swap(Object[] arr, int i, int j) {
            Object temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    
        public static <T extends Comparable<? super T>> void printArray(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            Integer[] arr = {5, 1, 9, 7, 3, 10, 2, 8, 6, 4};
            bubbleSort(arr);
            printArray(arr);
        }
    }

    冒泡排序优化--标记位

    public class Bubble {
        /**
         * 冒泡排序优化--标记符
         *
         * @param arr
         * @param <T>
         */
        public static <T extends Comparable<? super T>> void bubbleSort(T[] arr) {
            for (int i = 0, pos = 0; i < arr.length; i = arr.length - pos) {
                pos = 0;
                for (int j = 0; j < arr.length - i - 1; j++) {
                    if (arr[j].compareTo(arr[j + 1]) > 0) {
                        swap(arr, j, j + 1);
                        pos = j + 1;//说明pos后面的元素都已有序,不需要进行比较了
                    }
                }
            }
        }
    
        public static void swap(Object[] arr, int i, int j) {
            Object temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    
        public static <T extends Comparable<? super T>> void printArray(T[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            Integer[] arr = {5, 1, 9, 7, 3, 10, 2, 8, 6, 4};
            bubbleSort(arr);
            printArray(arr);
        }
    }
    

      

  • 相关阅读:
    js_未结束的字符串常量
    [转]关于项目管理的思考
    Nhibernate理解
    Visual Studio 2005常用插件搜罗
    基本概念
    resharper 2.0
    Nhibernate资源
    [转]关于项目管理的知识点
    style
    带分数 蓝桥杯
  • 原文地址:https://www.cnblogs.com/Hangtutu/p/8022008.html
Copyright © 2011-2022 走看看