## Earliest deadline cpu scheduling algorithm

I can't figure out how to show the correct diagram for this earliest deadline first algorithm. So far here is my code:
```import java.util.*;

{

public static void main(String args[])
{

Scanner sc = new Scanner(System.in);

System.out.println("enter no. of processes : ");
int n=sc.nextInt();
int job[]=new int[n+1];
int burst[]=new int[n+1];
int newburst[]=new int[n+1];
int arrival[]=new int[n+1];
int wt[]=new int[n+1];
int turn[]=new int[n+1];
int tot_turn=0;
int tot_wait=0;
float avg_turn=0;
float avg_wait=0;
int j;

for(int m=1;m<=n;m++)
{
arrival[m]=m;
}
for(int m=1;m<=n;m++)
{
job[m]=m;
}

for(int m=1;m<=n;m++)
{
System.out.println("enter arrival time, burst time and deadline of process "+(m)+"(0 for none):");
arrival[m]=sc.nextInt();
burst[m]=sc.nextInt();

}
}

int temp;
for(int i=1;i<n;i++)
{
for(j=1;j<n;j++)
{

{

temp=job[j+1];
job[j+1]=job[j];
job[j]=temp;

temp=burst[j+1];
burst[j+1]=burst[j];
burst[j]=temp;
}
}
}
turn[1]=burst[1];

for(int i=2;i<=n;i++)
{
turn[i]=burst[i]+turn[i-1];
wt[i]=turn[i]-burst[i];
}
for(int i=1;i<=n;i++)
{
tot_turn+=(wt[i]+burst[i])-arrival[i];
avg_turn=(float)tot_turn/n;
tot_wait+=wt[i]-arrival[i];
avg_wait=(float)tot_wait/n;
}
for(int m=1;m<=n;m++)
{
}
if(wt[m]==0){
System.out.println("0"+wt[m]+" _____");
}
else{
System.out.println(wt[m]+" _____");
}
System.out.println("  |     |");

System.out.println("  |job "+job[m]+"|");

System.out.println("  |_____|");
try
{
//newburst[m]=(burst[m]*1000);
}catch (InterruptedException ie)
{
System.out.println(ie.getMessage());
}
}
System.out.println((wt[wt.length-1]+burst[burst.length-1]));```

If I input 2 processes this will be the output:
```enter no. of processes :
2
enter arrival time, burst time and deadline of process 1(0 for none):
0 17 0
enter arrival time, burst time and deadline of process 2(0 for none):
0 13 10
00 _____
|     |
|job 2|
|_____|
13 _____
|     |
|job 1|
|_____|
30```

It shows the correct intended output. But for 3 processes like this then it will output:
```enter no. of processes :
3
enter arrival time, burst time and deadline of process 1(0 for none):
0 17 0
enter arrival time, burst time and deadline of process 2(0 for none):
0 13 10
enter arrival time, burst time and deadline of process 3(0 for none):
25 14 20
00 _____
|     |
|job 2|
|_____|
13 _____
|     |
|job 3|
|_____|
27 _____
|     |
|job 1|
|_____|
44```
It shows an incorrect output, that job 1 should come after job 2 and instead of job 3. But then again if I input 5 process it will show correct output again:
```enter no. of processes :
5
enter arrival time, burst time and deadline of process 1(0 for none):
0 17 0
enter arrival time, burst time and deadline of process 2(0 for none):
0 13 10
enter arrival time, burst time and deadline of process 3(0 for none):
25 14 20
enter arrival time, burst time and deadline of process 4(0 for none):
25 10 15
enter arrival time, burst time and deadline of process 5(0 for none):
30 5 0
00 _____
|     |
|job 2|
|_____|
13 _____
|     |
|job 1|
|_____|
30 _____
|     |
|job 4|
|_____|
40 _____
|     |
|job 3|
|_____|
54 _____
|     |
|job 5|
|_____|
59```