流水作业调度Java代码
时间:2025-12-16
时间:2025-12-16
import javax.swing.*;
import ng.*;
import java.io.*;
public class FlowS{
static class Elememt
{
int key;
int index;
boolean job;
private Elememt(int kk,int ii,boolean jj)
{
key=kk;
index=ii;
job=jj;
}
}
public static int flowShop(int []a,int []b,int []c) //a[]放的是N1 b[]放的是N2
{ //c[]放的是作业排好序列的顺序
int n=a.length;
Elememt []d=new Elememt[n];
for(int i=0;i<n;i++){
int key=a[i]>=b[i]? b[i]:a[i]; //按johnson 法则分别取对应的b[i]或 a[i]值作为关键字
boolean job=a[i]<b[i]; //给符合条件a[i]<b[i]的放入N1子集大标记true d[i]=new Elememt(key,i,job);
System.out.println("d["+i+"] "+key+" "+i+" "+job);
}
mergeSort(d); // 对数组d 按关键字升序进行排序
System.out.println();
System.out.println("输出排序后的相关值");
for(int i=0;i<n;i++) //输出排序结果
System.out.println("d["+i+"] "+d[i].key+" "+d[i].index+" "+d[i].job);
int j=0,k=n-1;
for(int i=0;i<n;i++){
if(d[i].job)c[j++]=d[i].index; //将排过序的数组d,取其中作业序号
else c[k--]=d[i].index; //属于N1的从前面进入,属于N2的从后面进入
上一篇:中美联合声明2011+中英对照