C 操纵数组

C 操纵数组,c,arrays,sorting,C,Arrays,Sorting,我是C语言编程新手,我有一个任务,我甚至不知道从哪里开始。 这就是我要做的:取一个整数列表,将它们排序为赔率和偶数,将偶数整数按发生的顺序放在列表的后面。我们必须返回列表[] 例如: 假设数组列表已初始化,大小设置为10: int List[Size] = {13, 31, 24, 16, 3, 48, 21, 11, 39, 6}; 然后调用evensToBack()将导致 索引:0123456789 价值:13 31 3 21 11 39 24 16 48 6 以及返回的值4 所有这些,我

我是C语言编程新手,我有一个任务,我甚至不知道从哪里开始。 这就是我要做的:取一个整数列表,将它们排序为赔率和偶数,将偶数整数按发生的顺序放在列表的后面。我们必须返回
列表[]

例如:

假设数组列表已初始化,大小设置为10:

int List[Size] = {13, 31, 24, 16, 3, 48, 21, 11, 39, 6};
然后调用
evensToBack()
将导致

索引:0123456789

价值:13 31 3 21 11 39 24 16 48 6 以及返回的值4

所有这些,我得到的只是这段开始代码:

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

请帮我解释一下如何从这里开始。我非常感谢。

在我看来,你想要的是方向而不是答案。考虑到这一点,以下是我看待这些问题的思考过程:

  • 要对任何列表进行排序,必须至少对整个列表进行一次排序
    • 这意味着某种循环(请参阅)
  • 你怎么确定它是偶数还是奇数?
    • 您可能需要执行某种数学运算(请参阅)
  • 你弄明白了之后,你打算怎么处理这个号码?
    • 你打算把结果放到新的列表中吗
    • 是否要修改当前列表
    • 其他可能性

  • 跟踪顶部和底部两个指数

    因此,在开始时,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
    
    直到尺寸>顶部或顶部==底部


    注意:您需要创建自己的列表,因为参数都是常量,所以您不能修改传递给函数的列表。您只需在数组中进行循环,并将偶数放在最后一个位置

    比如:

    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;
        } 
    

    for(i=0;i)实现简单的排序算法,但只需将“小于”的含义更改为“奇数”。