1

首先,这是一个家庭作业。我正在尝试在 C++ 中使用偏移量创建一些气泡排序函数。该函数必须采用带有计数元素的偏移量的数组输入。

例如:a[5] = {90, 9, 2, 10, 5}-> bubbleSort(a, 1, 4)->{90, 2, 5, 9, 10}

目前这是我的代码的样子:

void bubbleSort(int arr[], int offset, int count) {
    bool swapped = true;
    int pivot = offset;
    while (swapped) {
        swapped = false;
        pivot++;
            for (offset ; offset < count - pivot; offset ++) {
                if (arr[offset] > arr[offset+1]) {
                    arr[offset] ^= arr[offset+1];
                    arr[offset+1] ^= arr[offset];
                    arr[offset] ^= arr[offset+1];
                    swapped = true;
                }
            }
    }
}

我认为我的偏移量检查超出了索引,你能告诉我哪里出错了吗?

4

2 回答 2

7

与其纠结于偏移,不如想想这样的问题:

void bubbleSort(int arr[], int offset, int count)
{
   StandardBubbleSort(&arr[offset], count);
}

void StandardBubbleSort(int arr[], int count)
{
// the standard algorithm from your text book
}
于 2012-06-24T05:04:20.643 回答
0

如果它适合您,请尝试此代码。

void bubbleSort(int arr[], int offset, int count) {  
    offset--;

    for (; offset < count; offset ++) 
        for(int j=0;j<count-1;j++)
        {
            if (arr[offset] > arr[offset+1]) {
                int temp=arr[offset];
                arr[offset]=arr[offset+1];
                arr[offset+1]=temp;
            }
        }
}
于 2012-06-24T05:38:47.213 回答