标签:style blog http color io for 2014 问题 div
操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 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[])
1 #include<stdio.h> 2 void scheduler(int task[], int n, int system_task[], int user_task[]) 3 { 4 int *x = new int[n]; 5 int i,j,k; 6 for (i=0; i < n; i++) 7 x[i] = i; 8 for (i=0; i < n-1; i++) 9 for (j=1; j < n-i; j++) 10 if (task[j-1] > task[j]) 11 { 12 int t = task[j-1]; 13 task[j-1] = task[j]; 14 task[j] = t; 15 t = x[j-1]; 16 x[j-1] = x[j]; 17 x[j] = t; 18 } 19 for (int i=0; i < n; i++) 20 printf("%d ",task[i]); 21 printf("\n"); 22 j = 0; 23 k = 0; 24 for (i=0; i < n; i++) 25 { 26 if(task[i] < 50) 27 system_task[j++] = x[i]; 28 else if (task[i] <= 255) 29 user_task[k++] = x[i]; 30 else ; 31 } 32 system_task[j] = -1; 33 user_task[k] = -1; 34 } 35 int main() 36 { 37 int task[100],sys[100],user[100],n; 38 scanf("%d",&n); 39 for (int i=0; i < n; i++) 40 scanf("%d",&task[i]); 41 scheduler(task,n,sys,user); 42 for (int i=0; sys[i] != -1; i++) 43 printf("%d ",sys[i]); 44 printf("\n"); 45 for (int i=0; user[i] != -1; i++) 46 printf("%d ",user[i]); 47 printf("\n"); 48 49 }
标签:style blog http color io for 2014 问题 div
原文地址:http://www.cnblogs.com/george-cw/p/3936261.html