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

      

  • 相关阅读:
    学习笔记15—Python 存储集
    学习笔记14—Python error集
    学习笔记13—python DataFrame获取行数、列数、索引及第几行第几列的值
    学习笔记12—linux下文件的复制、移动与删除
    学习笔记11—MATLAB 界面设计
    学习笔记10—Python 绘图集
    学习笔记9—python数据表的合并(join(), merge()和concat())
    学习笔记8—MATLAB中奇异值处理办法
    make ffmpeg makefile
    Linux Socket
  • 原文地址:https://www.cnblogs.com/Hangtutu/p/8022008.html
Copyright © 2011-2022 走看看