C ++冒泡与偏移排序?

时间:2012-06-24 04:52:12

标签: c++

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

例如: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;
                }
            }
    }
}

我认为我的偏移检查不在索引中,你能不能告诉我哪里出错了?

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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;
            }
        }
}