Non-preemptive means that once a process has been removed from the waiting queue and given CPU time, it will execute until completed or terminated. It can be both a preemptive and non-preemptive algorithm. The shortest job first algorithm prefers processes that arrive first and have the shortest burst times.