编写一个程序来打印zigzagarray中的数组元素

时间:2015-07-02 18:18:11

标签: c arrays

假设我们的数组提供的元素很少:

arr[]={5,8,7,25,-2,2,25}

我们希望它可以像max,min一样交替打印:

arr[]={25,-2,25,2,8,5,7} //output

主要功能如下:

int main()
{
   int arr[]={5,8,7,25,-2,2,25} ;
   int res_size  ;
   int *res;
   int n = sizeof(arr)/sizeof(arr[0]);

   res=rearrange(arr, n, &res_size);

   for(int i=0;i<res_size;i++)
      printf("%d\t",res[i]);
   return 0;
}

// complete the function..
int *rearrange(int*arr, int size, int *res_size)
{
//complete the body with proper return type...

}

我能够为它编写程序,但无法找到返回类型。所以我的输出与任何测试用例都不匹配。

请有人用特定的返回类型完成重新排列功能。 res_size的意思是什么?

1 个答案:

答案 0 :(得分:0)

您不需要重新排列函数中的res_size参数。如果你只是想修改你自己的数组,那么重新排列的返回类型应该是无效的。如果要创建数组的副本并对其进行修改,可以显式执行此操作并在复制的数组上调用重新排列,或者可以将重新排列的返回类型设置为一个完整的数组。

至于获取数组的算法,这里是伪代码:

  1. 按升序排列的第一个订单号。可以使用类似快速排序的算法:https://en.wikipedia.org/wiki/Quicksort或任何其他排序算法。
  2. 然后有一个while循环,其计数器从0开始,直到数组的长度。您还有两个指针指向已排序数组的每一端。在返回数字后将计数器递增(或将其添加到重新排列的数组中)。
  3. 然后,当计数器为0或偶数时,返回指针在较大数字末端指向的值。当计数器为奇数时,返回指针在较低数字末端指向的值。每次指针返回指向您的数字后,您将其按下列表。
  4. 您不必担心何时停止查看指针,因为您的while循环设置为数组的长度。