首先,这是一项家庭作业。我正在尝试使用偏移量在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;
}
}
}
}
我认为我的偏移检查不在索引中,你能不能告诉我哪里出错了?
答案 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;
}
}
}