lintcode-464-整数排序 II

464-整数排序 II

给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。

样例

给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。

标签

排序 快速排序 归并排序

思路

使用快速排序

code

class Solution {
public:
    /**
     * @param A an integer array
     * @return void
     */
    void sortIntegers2(vector<int>& A) {
        // Write your code here
        int size = A.size();
        if (size <= 1) {
            return;
        }
        quitSort(A, 0, size - 1);
    }

    void quitSort(vector<int> &A, int left, int right) {
        if (left < right) {
            int i = left, j = right, x = A[i];
            while (i < j) {
                while (i < j && A[j] >= x) {
                    j--;
                }
                if (i < j) {
                    A[i] = A[j];
                    i++;
                }
                while (i < j && A[i] < x) {
                    i++;
                }
                if (i < j) {
                    A[j] = A[i];
                    j--;
                }
            }
            A[i] = x;
            quitSort(A, left, i - 1);
            quitSort(A, i + 1, right);
        }
    }
};
原文地址:https://www.cnblogs.com/libaoquan/p/7403009.html