import java.util.ArrayList;
import java.util.List;
public class Question {
// 调度总站
class DiaoDuZhan{
private ListClient list;
public Client getClient(){// 获得客户
if(list != null list.size() 0){
Client client = list.get(0);
list.remove(client);
return client;
}else{
return null;
}
public void addClient(Client client){
if(list == null){
list = new ArrayListClient();
list.add(client);
// 客户
interface Client{
public void setService(Service service);
public Service getSerive();
// 服务
interface Service{
public void doService();
// 服务员
class waiter{
DiaoDuZhan diaoduzhan;
public DiaoDuZhan getDiaoduzhan() {
return diaoduzhan;
public void setDiaoduzhan(DiaoDuZhan diaoduzhan) {
this.diaoduzhan = diaoduzhan;
public void doNext(){
Client client = diaoduzhan.getClient();
if(client != null)
client.getSerive().doService();
多机调度问题的Java实现(贪心算法)
具体问题描述以及C/C++实现参见网址
[java]?view?plain?copy?print?
import?java.util.ArrayList;?
import?java.util.Collections;?
import?java.util.LinkedList;?
import?java.util.List;?
/**?
*?多机调度问题--贪心算法?
*?
*/?
public?class?JobMachine?{?
public?static?class?JobNode?implements?Comparable{?
int?id;//作业的标号?
int?time;//作业时间?
public?JobNode(int?id,int?time){?
this.id=id;?
this.time=time;?
}?
public?int?compareTo(Object?x)?{//按时间从大到小排列?
int?times=((JobNode)x).time;?
if(timetimes)?return?-1;?
if(time==times)?return?0;?
return?1;?
}??
public?static?class?MachineNode?implements?Comparable{?
int?id;//机器的标号?
int?avail;//机器空闲的时间(即机器做完某一项工作的时间)?
public?MachineNode(int?id,int?avail){?
this.avail=avail;?
public?int?compareTo(Object?o)?{//升序排序,LinkedList的first为最小的?
int?xs=((MachineNode)o).avail;?
if(availxs)?return?-1;?
if(avail==xs)?return?0;?
public?static?int?greedy(int[]?a?,int?m){?
int?n=a.length-1;//a的下标从1开始,所以n(作业的数目)=a.length-1?
int?sum=0;?
if(n=m){?
for(int?i=0;in;i++)?
sum+=a[i+1];?
System.out.println("为每个作业分别分配一台机器");?
return?sum;?
ListJobNode?d=new?ArrayListJobNode();//d保存所有的作业?
for(int?i=0;in;i++){//将所有的作业存入List中,每一项包含标号和时间?
JobNode?jb=new?JobNode(i+1,a[i+1]);?
d.add(jb);?
Collections.sort(d);//对作业的List进行排序?
LinkedListMachineNode?h=new?LinkedListMachineNode();//h保存所有的机器?
for(int?i=1;i=m;i++){//将所有的机器存入LinkedList中?
MachineNode?x=new?MachineNode(i,0);//初始时,每台机器的空闲时间(完成上一个作业的时间)都为0?
h.add(x);?
int?test=h.size();?
for(int?i=0;in;i++){?
Collections.sort(h);?
MachineNode?x=h.peek();?
System.out.println("将机器"+x.id+"从"+x.avail+"到"+(x.avail+d.get(i).time)+"的时间段分配给作业"+d.get(i).id);?
x.avail+=d.get(i).time;?
sum=x.avail;?
public?static?void?main(String[]?args)?{?
int?sum=greedy(a,m);?
System.out.println("总时间为:"+sum);?
运行结果:?
*/
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i = 100; i++) {
continue;
sum += i;
System.out.println(sum);
你先用C++写,然后做成DLL.
再用java去调就好了.
一般java做底层控制和调用都会这么做.
就像io什么的,都是去调用C的代码完成的
一般java调用c写的dll代码都比较方便.
c调用java的代码几乎不可能.
以上就是土嘎嘎小编为大家整理的java实现调度算法代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!