zoukankan      html  css  js  c++  java
  • 4.1_8种常用排序算法1(交换排序:冒泡排序+快速排序)

    【8中排序算法一览】

    【算法1:冒泡排序】

    【冒泡算法实例】

    package com.sort.demo1;
    
    import java.util.Arrays;
    
    /**
     * 冒泡排序
     */
    public class BubbleSort {
    
        public static void main(String[] args) {
            int[] arr = new int[]{1,4,5,7,3,9,8,0,2,6};
            System.out.println(Arrays.toString(arr));
            bubbleSort(arr);
            System.out.println(Arrays.toString(arr));
        }
    
        /**
         * 冒泡排序算法
         * 第一个for循环:控制共比较多少轮
         * 第二个for循环:控制每次循环中比较的次数
         * @param arr
         */
        public static void bubbleSort(int[] arr){
            for(int i=0;i<arr.length-1;i++){
                for(int j=0;j<arr.length-1-i;j++){
                    if(arr[j]>arr[j+1]){
                        int temp = arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    }
                }
            }
        }
    }

    【快速排序算法】

    【实例】

    package com.sort.demo1;
    
    import java.util.Arrays;
    
    /**
     * 快速排序
     */
    public class QuickSort {
        
        public static void main(String[] args) {
            int[] arr = new int[]{1,4,5,7,3,9,8,0,2,6};
            System.out.println(Arrays.toString(arr));
            quickSort(arr,0,arr.length-1);
            System.out.println(Arrays.toString(arr));
        }
    
        /**
         * 快速排序算法
         * @param arr
         * @param start
         * @param end
         */
        public static void quickSort(int[] arr,int start,int end){
            if(start<end){
                //把数组中的第start个数字作为标准数
                int stard = arr[start];
                //记录需要排序的下标
                int low = start;
                int high = end;
                //循环找到比标准数大的数 和 比标准数小的数
                while (low<high){
                    //如果右边的数字比标准数大,右边的下标-1
                    while (low<high && stard<=arr[high]){
                        high--;
                    }
                    //使用右边的数字替换左边的数字
                    arr[low] = arr[high];
                    //如果左边的数字比标准数小,左边的下标+1
                    while (low<high && stard>arr[low]){
                        low++;
                    }
                    arr[high] = arr[low];
                }
                //把标准数赋值给low低所在的位置的元素(这个时候low=high)
                arr[low] = stard;
                //处理所有的小的数字
                quickSort(arr,start,low);
                //处理所有的大的数字
                quickSort(arr,low+1,end);
            }
        }
    }
  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/HigginCui/p/10593420.html
Copyright © 2011-2022 走看看