天天看點

快速排序 qsort

快速排序(quick sorting 又稱 劃分排序),是對氣泡排序的改進。原理: 從待排序區間(a[0]到a[n-1])選取第一個為基準元素。通過從兩端向中間順序進行比較和交換,使前面單元中隻包含比 基準元素小的數。....

        static void qsort(int[] arr, int s, int e) {

            int i = s, j = e + 1;

            int t = arr[s];

            do {

                do i++; while(arr[i]<t && i<e );

                do j--; while(arr[j]>t && j>s);

          if (i < j) {

                    swap(ref arr[i],ref arr[j]);

                }

            } while (i < j);

            swap(ref arr[s], ref arr[j]);    //一次比較完成 (基準 與 j 位置的元素交換)

            if(s<j-1) qsort(arr, s, j - 1);

            if(j+1<e) qsort(arr, j+1,e );

        }

        static void swap(ref int x,ref int y)

        {

            int t = x;

            x = y;

            y = t;