我正在尝试为数组创建Bubblesort函数。当且仅当我确定函数外部的大小(数组元素的数量)时,它才起作用。我不确定为什么它在函数内部不起作用?
这是我的代码:
void swap(int* a, int* b){
int temp = *a;
*a = *b;
*b = temp;
}
void bubbleSort(int arr[], int n)
{
for (int i = 0; i < n-1; ++i){
for (int j = 0; j < n- i - 1; ++j){
if(arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);
}
}
}
int main()
{
int myarray[] = {10, 4, 8, 11, 1, 21, 3};
int n = sizeof(myarray) / sizeof(myarray[0]);
bubbleSort(myarray, n);
for (int i = 0; i < (sizeof(myarray)/sizeof(myarray[0])); ++i)
cout << myarray[i] << ", ";
return 0;
}
如果我尝试这样做:
void bubbleSort(int arr[])
{
int n = sizeof(arr) / sizeof(arr[0]);
cout << n;
for (int i = 0; i < n-1; ++i){
for (int j = 0; j < n- i - 1; ++j){
if(arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);
}
}
}
它计算n为2而不是7。...
不确定为什么吗?
为什么相同的数组最终会被计算为不同的大小?
我的意思是,由于没有循环,因此sizeof计算应该只发生一次。