Csharp實現快速排序


  public void QuickSort(int[] arr, int left, int right)   //快速排序
        {
            //先從數列中去處一個數作為基准數
            //分區過程,將比這個數大的數全放在他的右邊,小於或者等於放在左邊
            //在對左右區間重復第二部
            if (left < right)
            {
                int x = arr[left];   //基准數,把比她小或者等於他的放在他的左邊,然后把比他大的放在右邊
                int i = left;
                int j = right;  //用來循環 的標志位
                while (i < j)
                {
                    while (i < j)
                    {
                        if (arr[j] <= x)
                        {
                            arr[i] = arr[j];
                            break;
                        }
                        else
                        {
                            j--;  //向左移動到下一個數字
                        }
                    }

                    //從前往后(從左向右)找到一個比x大的數字
                    while ( i < j)
                    {
                        if (arr[i] > x)
                        {
                            arr[j] = arr[i];
                            break;
                        }
                        else
                        {
                            i++;
                        }
                    }
                   
                }
                arr[i] = x;
                QuickSort(arr, left, i - 1);  //使用回調
                QuickSort(arr, i + 1, right);
            } 
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM