4.1_8種經常使用排序算法1(交換排序:冒泡排序+快速排序)

【8中排序算法一覽】java

【算法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;
                }
            }
        }
    }
}

 

【快速排序算法】ui

【實例】spa

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);
        }
    }
}
相關文章
相關標籤/搜索