当前位置: 首页 > 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);

相关文章:

  • 《大语言模型》学习笔记(三)
  • 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不起作用
  • 首次带人形机器人走科技节红毯,傅利叶顾捷:机器人行业没包袱,很多事都能从零开始
  • 新闻1+1丨强对流天气频繁组团来袭,该如何更好应对?
  • 全国省市县国土空间总体规划已基本批复完成,进入全面实施阶段
  • 四川甘孜炉霍县觉日寺管委会主任呷玛降泽被查
  • “女硕士失踪13年生两孩”案进入审查起诉阶段,哥哥:妹妹精神状态好转
  • 商务部就开展加强战略矿产出口全链条管控工作应询答记者问