1. 程式人生 > 實用技巧 >spring基於XML的申明式事務控制

spring基於XML的申明式事務控制

原始資料如上,並且設定兩個指標,以及一個基準pivot = 4(這裡採用首元素為基準,基準可以是隨機一個元素)。

在第一次迴圈中,從right指標開始,讓指標指向的元素與基準元素比較,指標指向元素大於等於基準元素時,指標向左移動一位;否則,指標right停止移動,切換到left指標。left指標指向的元素如果小於等於基準元素,指標向右移動,否則指標停止移動,讓left指標指向的元素與right指標指向的元素進行交換當left與right指向同一個位置時,將該與元素與基準元素交換位置

在上面數列中1<4,所以right指標停止移動,切換到left指標,然後進行下一步比較,4=4,所以left指標向右移動,7>4,所以將left指標停止移動,並且將left和right指標指向的元素交換。接下來繼續進行下一輪的迴圈。流程大致如下:

程式碼實現如下:

public static void quickSort(int[] arr,int left,int right){
        int i,j,pivot;
        //遞迴結束條件
        if(left>=right){
            return;
        }
        i=left;  //左指標
        j=right;  //右指標
        //pivot就是基準位
        pivot = arr[left];
        while (i<j) {
            //先看右邊,依次往左遞減
while (pivot<=arr[j]&&i<j) { j--; } //再看左邊,依次往右遞增 while (pivot>=arr[i]&&i<j) { i++; } //如果滿足條件則交換 if (i<j) { int temp = arr[j]; arr[j]
= arr[i]; arr[i] = temp; } } //最後將基準為與i和j相等位置的數字交換 arr[left] = arr[i]; arr[i] = pivot; //遞迴呼叫左半陣列 quickSort(arr, left, j-1); //遞迴呼叫右半陣列 quickSort(arr, j+1, right); }