1

まず第一に、これは宿題です。オフセットを使用してC++でbubbleSort関数を作成しようとしています。関数は、カウント要素を持つオフセットを持つ配列入力を受け取る必要があります。

例: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 に答える