操纵数组

时间:2013-11-18 22:12:22

标签: c arrays sorting

我是C编程的新手,我有一项任务,我甚至不知道从哪里开始。 这就是我要做的事情:获取一个整数列表并将它们分类为几率和均数将偶数整数按照发生的顺序排在列表的后面。我们必须在List[]

中返回偶数的整数

例如:

假设数组列表初始化为Size设置为10:

int List[Size] = {13, 31, 24, 16, 3, 48, 21, 11, 39, 6};

然后调用evensToBack()会导致

指数:0 1 2 3 4 5 6 7 8 9

价值:13 31 3 21 11 39 24 16 48 6 价值4被退回。

所有我得到的就是这个起始代码:

`int evensToBack(int* const List, const int Size){
//body
}`

请帮我解释如何开始这里。我将不胜感激。

3 个答案:

答案 0 :(得分:1)

对我而言似乎想要给出指示而不是答案。考虑到这一点,当我看到这些问题时,这是思考过程:

  1. 为了对任何列表进行排序,您必须至少完成整个列表一次
  2. 你如何确定它是偶数还是奇数?
  3. 你想出这个数字后你打算怎么处理这个数字?
    • 您打算将结果放入新列表吗?
    • 你要修改当前列表吗?
    • 其他可能性
  4. My Full Procedure

答案 1 :(得分:1)

你只需要在数组中循环并将偶数放在最后位置。

类似的东西:

for(i=0;i<length(List);i++)
   if isEven(List[i]){
      tempvar=List[i];
      for(j=i;j<length(List)-1;j++) List[j]=List[j+1];
      List[j+1]=tempvar;
    } 

答案 2 :(得分:0)

跟踪2个指数,顶部和底部

所以你的top = 0和bottom = Size - 1开头

循环遍历列表以设置底部索引(只是为了确保底部索引指向最底部的奇数)

使用top = 0

再次遍历列表
if List[top]%2 != 0 // if its an odd number
    swap it with List[bottom]
    decrement bottom by 1
increment top by 1

直到尺寸&gt;顶部或顶部==底部

注意:您需要创建自己的列表,因为参数都是常量,因此您无法修改传递给函数的列表