Lintcode——整数排序 II

来源:互联网 发布:矩阵论清华大学出版社 编辑:程序博客网 时间:2024/06/07 15:38

1.题目

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

样例

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

2.思路

      sort()函数是nlogn的算法,用此函数可以解决此问题。

3.代码

AC代码:

class Solution {public:    /**     * @param A an integer array     * @return void     */    void sortIntegers2(vector<int>& A) {        // Write your code here        sort(A.begin(),A.end());    }};
错误:

class Solution {public:    /**     * @param A an integer array     * @return void     */    void sortIntegers2(vector<int>& A)    {        void quicksort(A,0,A.size()-1);    }    public int Partition(vector<int>& A,int first,int end)    {           int i=first,j=end;        int pivot=A[first];        while(i<j)        {            while(i<j&&A[i]<=A[j])            j--;            if(i<j)            {                A[i]=A[j];                i++;            }            while(i<j&&A[i]<=A[j])            i++;            if(i<j)            {                A[j]=A[i];                j--;            }        }        return i;        A[i]=pivot;    }   public void quicksort(vector<int>& A,int first,int end) {        // Write your code here        //sort(A.begin(),A.end());        if(first<end)        int mid=Partition(A,first,end);        quicksort(A,first,mid-1);        quicksort(A,mid+1,end);    }};

4.感想

         想应用一下学过的快速排序,写了半天却一直过不了。。。。先去写别的题了,回来待思考!!

原创粉丝点击