Quicksort赢得了超过50个元素的排序

时间:2014-05-06 19:32:42

标签: c++ sorting quicksort off-by-one

以下是我如何生成要排序的数字。

vector<int> list;
for (i=0;i<50;i++) list.push_back(rand() %1000);

这是我在主要

中的电话
quickSort(list , 0, (list.size() -1 ));

这是快速排序功能

int pivot = left;
int temp = right;

if(left > right - 1)
    return;

while (left != right) {
    if (pivot == left){
        if (list[pivot] > list[right]) {
            //-------------------------
            std:swap(list, right, pivot);
            //-------------------------
            pivot = right;
            left++;
        }else{
            right--;
        }

    }else{
        if (list[pivot] < list[left]) {
            //-------------------------
              swap(list, left, pivot);
            //-------------------------
            pivot = left;
            right--;
        }else{
            left++;
        }
    }
}
quickSort(list, 0, right -1);
quickSort(list, right + 1, temp);

随着我排序的元素数量接近大约50,排序所需的时间会呈指数级变大。我没有想法。有没有人曾经处理过这个问题?

0 个答案:

没有答案