Nwafu-OJ-1486 Problem p C语言实习题八——任务调度问题

问题 : C语言实习题八——任务调度问题

时间限制: 1 Sec  内存限制: 128 MB
提交: 6790  解决: 1487
[提交][状态][讨论版]

题目描述

操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。当中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现例如以下功能,将task[] 中的任务依照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),而且优先级高的任务排在前面,优先级同样的任务依照入队顺序排列(即先入队的任务排在前面),数组元素为-1表示结束。
      比如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}   则 system_task[] = {0, 3, 1, 7, -1}    user_task[] = {4, 8, 2, 6, -1}
       函数接口规定:  void scheduler(int task[], int n, int system_task[], int user_task[])

代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include 
#include struct List
{int num;int index;
};void scheduler(int task[], int n, int system_task[], int user_task[]) {struct List* list = (struct List*)malloc(n * sizeof(struct List));int i = 0;int j = 0;int k = 0;for (i = 0; i < n; i++) {list[i].num = task[i];list[i].index = i;}for (i = 0; i < n - 1; i++) {for (j = 0; j < n - 1 - i; j++) {if (list[j].num > list[j + 1].num) {int tmp = list[j].num;list[j].num = list[j + 1].num;list[j + 1].num = tmp;tmp = list[j].index;list[j].index = list[j + 1].index;list[j + 1].index = tmp;}}}j = 0;k = 0;for (i = 0; i < n; i++) {if (list[i].num < 50) {system_task[j++] = list[i].index;}else if (list[i].num >= 50 && list[i].num <= 255) {user_task[k++] = list[i].index;}}system_task[j++] = -1;user_task[k++] = -1;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部