看了半天都不会,求解答
设计函数void partion(int a[],int i),将长度为n的数组a中的所有负数调整到数组的前面,所有非负数调整到数组的后面,并编写测试程序
一个下标从左到右,一个下标从右到左
左侧元素为负数时,向右移动下标;右侧元素为正数时,向左移动下标
如果都停下来,进行数值交换
直到左侧小标值大于等于右侧下标值
#include<stdio.h>
void partion(int a[],int n)
{
int left = 0,right = n-1,t;
while(left < right)
{
while(a[left] < 0 && left < right)
left++;
while(a[right] >= 0 && right > left)
right--;
if(left < right)
{
t = a[left];
a[left] = a[right];
a[right] = t;
left++;
right--;
}
}
}
int main()
{
int a[10];
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
partion(a,10);
for(int i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}