当前位置: 首页 > news >正文

多机调度问题(C语言)

代码如下:

#include<stdio.h>
#include<stdlib.h>

int compare(void* a, void* b)//比较函数,用于qsort按处理时间从大到小排序
{
	return *(int*)a - *(int*)b;
}

int LPT(int jobs[], int n, int m)//多机调度问题的LPT算法
{
	qsort(jobs, n, sizeof(int), compare);//按处理时间从大到小排序作业

	int* jobtime = (int*)calloc(m, sizeof(int));//初始化每台机器的处理时间为0

	for (int i = 0; i < n; i++)//依次将作业分配给当前处理时间最短的机器
	{
		int minIndex = 0;
		for (int j = 1; j < m; j++)
		{
			if (jobtime[j] < jobtime[minIndex])
			{
				minIndex = j;
			}
		}
		jobtime[minIndex] = jobtime[minIndex] + jobs[i];//找到当前处理时间最短的机器,将该作业分配给这台机器,并更新其处理时间。
	}

	int maxtime = jobtime[0];
	for (int i = 1; i < m; i++)//找出最大的处理时间
	{
		if (jobtime[i] > maxtime)
		{
			maxtime = jobtime[i];
		}
	}

	free(jobtime);

	return maxtime;
}

int main()
{
	int jobs[] = { 2, 3, 5, 7, 4, 6 };
	int n = sizeof(jobs) / sizeof(jobs[0]);
	int m = 3;
	int result = LPT(jobs, n, m);
	printf("完成所有作业的最短时间是: %d\n", result);
	return 0;
}

calloc函数:

用于动态内存分配的标准库函数,位于 <stdlib.h> 头文件中。

函数原型:void *calloc(size_t nmemb, size_t size);

http://www.dtcms.com/a/77129.html

相关文章:

  • 《大语言模型》学习笔记(三)
  • LeetCode[42] 接雨水
  • Java设计模式建模语言面向对象设计原则
  • C#本地将labelme数据集转换为机器视觉yolo数据集格式
  • 数据库练习3
  • final 在 java 中有什么作用?
  • 用了Cline和华为云的大模型,再也回不去了
  • Skia 图形引擎介绍
  • 5.2《生活中的透镜》——5.3《凸透镜成像规律》讲后再上
  • 《保险科技》
  • 什么是YApi?开源接口管理平台部署教程
  • 使用Docker快速搭建OpenAI兼容的Embeddings与Rerank双API服务
  • 桌子(table、desk)以及其他常见物体的urdf模型,用于搭建机器人环境如pybullet、Gazebo
  • 单片机学完开发板,如何继续提升自己的技能?
  • 采用贝塞尔函数,进行恒定束宽波束形成算法
  • Opencv之计算机视觉一
  • 10分钟打造专属AI助手:用ms-swift实现自我认知微调
  • 在Vue3中使用$router.push方法进行路由跳转时,如何传递多个路径参数?
  • Android 拍照开发——移动虚拟机摄像头
  • lombok不起作用
  • 蓝桥杯第13届真题2
  • 【R语言】 文件,vector, matrix,dataframe 的基本操作
  • STM32---FreeRTOS软件定时器
  • 修改HuggingFace模型默认缓存路径
  • C 语言中 typedef struct 与 struct 的区别详解
  • 射频组件、度量和数学计算
  • F8 逐行执行(Step Over) F7 进入方法(Step Into) Shift+F8 跳出方法(Step Out)
  • 合React宝宝体质的自定义防抖hook
  • 相对路径跳转和绝对路径跳转有什么区别?
  • Vue3一个组件绑定多个 v-model,自定义 prop 和 event 名称