文章

183

粉丝

0

获赞

0

访问

11.6k

头像
2019年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年12月1日 17:40
阅读数 69



#include <stdio.h>

// 主函数:原地重排数组
void reorderArray(int arr[], int n) {
    if (n <= 2) return;
    
    // 将数组分成两半:[1,2,3] 和 [4,5,6]
    // 目标:合并成 [1,4,2,5,3,6]
    
    int mid = n / 2;
    
    // 将后半部分插入到前半部分的间隙中
    for (int i = 1; i < n; i += 2) {
        // 每次从后半部分取一个元素
        int element = arr[mid + i/2];
        
        // 将i位置之后的元素后移一位
        for (int j = mid + i/2; j > i; j--) {
            arr[j] = arr[j - 1];
        }
        
        // 插入元素
        arr[i] = element;
        
        // 更新mid(因为数组长度没变,但后半部分的起始位置变了)
        mid++;
    }
}

 


评分及理由

(1)得分及理由(满分3分)

得分:0分。理由:学生作答给出的算法设计思想是针对数组的原地重排,而题目要求的是对带头结点的单链表进行操作。数据结构完全不同,算法思想完全不适用。因此,基本设计思想部分不得分。

(2)得分及理由(满分8分)

得分:0分。理由:学生提供的代码是操作数组(`int arr[]`)的`reorderArray`函数,与题目要求的基于`NODE`结构体的单链表算法完全不符。代码中没有任何链表操作(如指针操作、结点定义、链表遍历等),因此算法描述部分完全错误,不得分。

(3)得分及理由(满分2分)

得分:0分。理由:由于算法本身错误(针对错误的数据结构),时间复杂度分析失去了前提。学生未提供任何关于链表算法的时间复杂度说明,因此不得分。

题目总分:0+0+0=0分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发