1. 程式人生 > 實用技巧 >一個輕量級的基於RateLimiter的分散式限流實現(轉載)

一個輕量級的基於RateLimiter的分散式限流實現(轉載)

import java.util.Arrays;

public class QuickSort {

    public static void main(String[] args) {
        int[] arr = {-9,78,567,23,0,70,78 -1,900, 4561};
        quickSort(arr, 0, arr.length-1);
        System.out.println("arr=" + Arrays.toString(arr));
    }

    public static void quickSort(int[] arr,int
left, int right) { int l = left; //左下標 int r = right; //右下標 //pivot 中軸值 int pivot = arr[(left + right) / 2]; int temp = 0; //臨時變數,作為交換時使用 //while迴圈的目的是讓比pivot 值小放到左邊 //比pivot 值大放到右邊 while( l < r) { //在pivot的左邊一直找,找到大於等於pivot值,才退出 while( arr[l] < pivot) { l
+= 1; } //在pivot的右邊一直找,找到小於等於pivot值,才退出 while(arr[r] > pivot) { r -= 1; } //如果l >= r說明pivot 的左右兩的值,已經按照左邊全部是 //小於等於pivot值,右邊全部是大於等於pivot值 if( l >= r) { break; } //交換 temp = arr[l]; arr[l]
= arr[r]; arr[r] = temp; //如果交換完後,發現這個arr[l] == pivot值 相等 r--, 前移 if(arr[l] == pivot) { r -= 1; } // 如果交換完後,發現這個arr[r] == pivot值 相等 l++, 後移 if(arr[r] == pivot) { l += 1; } } // 如果 l == r, 必須l++, r--, 否則為出現棧溢位 if (l == r) { l += 1; r -= 1; } //向左遞迴 if(left < r) { quickSort(arr, left, r); } //向右遞迴 if(right > l) { quickSort(arr, l, right); } } }