\begin{algorithm}
        \caption{Fuzzy Quicksort}
        \begin{algorithmic}
        \INPUT a sequence of $n$ intervals $A$ , where $A[i].a$ and $A[i].b$ denotes the lower and upper bound of the interval
        \OUTPUT a sorted sequence of input intervals
        \STATE\CALL{FuzzyQuicksort}{$A, 1, n$}
        \STATE
        \PROCEDURE{FuzzyQuicksort}{$A, p, r$}
            \IF{$p < r$}
                \STATE $(q, t) =$ \CALL{FuzzyPartition}{$A, p, r$}
                \STATE \CALL{FuzzyQuicksort}{$A, p, q-1$}
                \STATE \CALL{FuzzyQuicksort}{$A, t+1, r$}
            \ENDIF
        \ENDPROCEDURE
        \STATE
        \PROCEDURE{FuzzyPartition}{$A, p, r$}
            \STATE exchange $A[p]$ with $A[RANDOM(p, r)]$
            \STATE $x = A[p]$
            \STATE $q = p$
            \STATE $t = p$
            \FOR{$i = p + 1$ \TO $r$}
                \IF{$A[i].b < x.a$} \COMMENT{interval less than condition}
                    \STATE exchange $A[q]$ with $A[i]$
                    \STATE $q = q + 1$
                    \STATE exchange $A[t+1]$ with $A[i]$
                    \STATE $t = t + 1$
                \ELSEIF{$A[i].b \ge x.a$ \AND $A[i].a \le x.b$} \COMMENT{interval equal condition}
                    \STATE exchange $A[t+1]$ with $A[i]$
                    \STATE $t = t + 1$
                \ENDIF
            \ENDFOR
            \RETURN $(q, t)$
        \ENDPROCEDURE
        \end{algorithmic}
        \end{algorithm}