[英]Reverse an array
我有一個反轉數組的功能,我認為有一些問題。 請引導我走正確的道路,以解決此問題。
功能:
void reversearr (int arr[], int arrlen)
{
int a, b, arrtemp[arrlen];
b=arrlen;
for (a=0; a<=arrlen; a++)
{
arr[a] = arrtemp[b];
b--;
}
printf("\nthe reversed array is");
for(b=0; b<arrlen; b++)
{
printf("%d",arrtemp[b]);
}
}
該函數以這種方式調用
reversearr(arr,max);
您正在arrtemp
初始化的arrtemp
復制。
我想你想要類似的東西
void reversearr (int arr[], int arrlen)
{
int a;
for (a=0; a<arrlen/2; a++)
{
int tmp = arr[arrlen-1-a]
arr[arrlen-1-a] = arr[a]
arr[a] = tmp;
}
}
void reversearr (int arr[], int arrlen)
{
int a, tmp;
for (a = 0; a < arrlen / 2; ++a)
{
tmp = arr[a];
arr[a] = arr[arrlen - a - 1];
arr[arrlen - a - 1] = tmp;
}
}
在兩個問題
int a, b, arrtemp[arrlen];
b=arrlen;
for (a=0; a<=arrlen; a++)
{
arr[a] = arrtemp[b];
b--;
}
arrtemp[arrlen]
超出范圍,有效索引是0到arrlen - 1
, arrtemp
復制到原始arr
。 有效索引是0到arrlen - 1
,因此:
for(a = 0; i <= arrlen; a++)
出現一對一錯誤。 您需要<
。
另請注意,使用動態長度這樣的數組在C中是很“新”的事情,應該沒問題,但需要C99編譯器。 與僅通過單個臨時項交換元素的O(1)(存儲中)方法相比,以這種方式進行操作沒有任何好處。
您使用了錯誤的數組來存儲反向數組。 嘗試以下代碼:
void reversearr (int arr[], int arrlen)
{
int a, b, arrtemp[arrlen];
b=arrlen;
for (a=0; a<=arrlen; a++)
{
arrtem[a] = arr[b];
b--;
}
printf("\nthe reversed array is");
for(b=0; b<arrlen; b++)
{
printf("%d",arrtemp[b]);
}
}
在JavaScript中,如果有數組,則必須反轉每個元素的字符串:
var arr = ['woow is great budd','mu me lelo','wikindi'];
function reverseString(str){
return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0);
}
for(i=0;i<arr.length;i++){
console.log(reverseString(arr[i]));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.