Pages

Quick Sort Note



QuickSort(A, P, r)
{
     if(p<r)  then {
        q = partion(A, P, r);
        QuickSort(A, P, q-1);
        QuickSort(A, q+1, r);
     }
}
Partition(A, P, r)
{
     x=A[r];
     i=P-1;
     for j=p to (r-1) do {
         if(A[j]<= x) then {
            i=i+1;
            SWAP(A[i], A[j]);
            return(i+1);
}
eg.
2, 8, 7, 1, 3, 5, 6, 4 實施 quick sort
"i"th:  p-1, p,................., r
array:  nil, 2, 8, 7, 1, 3, 5, 6, 4
i為p-1
j為p
j往前走,發現比array[r](i.e.4)還小的值,就把i+1然後做交換,當j走到r-1的時候,把array[r]跟array[i+1]交換
flow:
2, 8, 7, 1, 3, 5, 6, 4
2, 8, 7, 1, 3, 5, 6, 4
2, 1, 7, 8, 3, 5, 6, 4
2, 1, 3, 8, 7, 5, 6, 4
2, 1, 3, 4, 7, 5, 6, 8
⭐️ 5, 5, 5, 5, 5*
這個數列在DS中,是最佳解,不過在Algo中是最糟解
👉O(n²)

KAIDLOG

ずっと、俺が捨てられた人 

沒有留言:

張貼留言