目标:在 L.H.S 上排列数组的负元素,在 R.H.S 上排列正元素
使用:递归
使用的数据类型:我使用过数组,但它在一个结构内,即数组 ADT
错误:分段错误
#include <stdio.h>
#include <stdlib.h>
struct Array
{
int a[10];
int len;
};
void swap(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void NegativeSort(struct Array *arr,int i,int j)
{
if(i < j)
{
if(arr-> a[i] > 0 && arr-> a[j] <= 0)
{
swap(&arr-> a[i],&arr-> a[j]);
NegativeSort(arr,i++,j--);
}
else if(arr-> a[i] >= 0)
NegativeSort(arr,i,j--);
else
NegativeSort(arr,j);
}
}
int main()
{
struct Array arr = {{-1,2,-3,4,-5,6,-7,8},8};
NegativeSort(&arr,7);
printf("elements are : ");
for(i = 0; i < arr.len - 1; i++)
printf("%d",arr.a[i]);
return 0;
}