为什么我的数组没有被修改?

时间:2014-09-04 18:11:25

标签: c++ arrays quicksort

下面是我的快速排序代码,无论出于什么原因,[]都没有被修改。我把它与互联网上提供的相比,它看起来很好。为什么会这样?

#include<iostream>
#include<string>

using namespace std;

void quicksort(int a[], int h, int l)
{
    cout<<"enters the function";
    for(int i=0;i<=h;++i)
        cout << "value" << i << "=" << a[i];

    int low = l;
    int high = h;
    int mid = a[(low+high)/2];
    do
    {
        while(mid > a[low])
        {
            low++;
        }

        while(mid < a[high])
        {
            high--;
        }

        if (low < high)
        {
            int t = a[low];
            a[low++] = a[high];
            a[high--] = t;
        }

    } while(low <= high);

    if(low < h)
    {
        quicksort(a,low,h);
    }

    if(high > l)
    {
        quicksort(a,l,high);
    }
}

int main()
{
    cout << "enter size";

    int n;
    cin >> n;

    int d[15];
    for(i=0;i<n;++i)
        cin >> d[i];

    quicksort(d,0,n-1);

    cout << "the sorted array=";
    for(int i=0;i<n;++i)
        cout << d[i] << ',';

    return 0;
}

输出与我输入的数组相同,没有任何更改。

1 个答案:

答案 0 :(得分:4)

因为您使用high = 0和low = n-1调用quicksort。你的论点是相反的。

BTW:代码格式化与大多数C ++程序员的期望不同,但是感谢您提供实际编译和运行的代码。