我是編程新手,目前我正在嘗試爲遞歸選擇排序算法。我嘗試將數組[10]傳遞給我在主函數和選擇排序函數調用另一個函數之前定義的選擇排序函數。編譯在此之後,它不排序的數組一些reason..Instead它增加了一個整數放入數組。我一開始無法弄清楚什麼是錯的...選擇排序在C ...不工作
void helper_func(int arr[],int x,int y)
{
int tmp=0;
if(y<= (sizeof(arr))/(sizeof(int)))
{
if(arr[x]>arr[y])
{
tmp=arr[x];
arr[x]=arr[y];
arr[y]=tmp;
}
y=y+1;
helper_func(arr,x,y);
}
}
void SelectionSort(int arr[], int len)
{
if (len>1)
{
int x=sizeof(arr)/sizeof(int)-len;
int y=x;
helper_func(arr,x,y);
len=len-1;
SelectionSort(arr,len);
}
}
int main()
{
int array_a[10]={10,9,8,7,6,5,4,3,2,1};
SelectionSort(array_a, 10);
int x=0;
for(x=0;x<=sizeof(array_a)/sizeof(int)-1;x++)//checking what is in the arry
{
printf("%d...",array_a[x]);
}
return 0;
}
哦,這是一個與問題無關的文體建議,但是您可能需要對其進行標準化,以便SelectionSort和helper_func使用相同的命名約定,與使用camelCase和使用下劃線的命名約定相反。你可以在C中查找一些關於命名約定的東西,那裏有很多文章。 – Nathan 2015-02-11 05:22:07
嗯我明白了。我想知道是否有可能只用遞歸函數編寫算法(不適用於循環或while循環) – GalaxyVintage 2015-02-12 05:34:23
從理論上講,可以用循環完成所有可以用循環完成的任務。 – Nathan 2015-02-12 08:42:32