Algorithm favours CPU bound or I/O bound processes
First of all, let me clarify that the CPU Burst Time of a process has no relation with being a CPU or I/O bound process. A CPU bound process is one that spends most of its execution time at CPU and an I/O bound process is one that spends most of its execution time at an I/O device. Therefore, a process having small CPU burst time can also be a CPU bound process. Similarly, a process having very large CPU burst time can still be I/O bound.
For example, consider a process A having CPU burst time of 1ms and I/O burst time of 5 ms. It is clearly an I/O bound process. And a process B having CPU burst time of 10ms and I/O burst time of 5 ms is clearly a CPU bound process. But if we consider SJF or SRTF algorithms, they will definitely prefer the process A over B inspite of A being I/O bound and B being CPU bound because A has lower CPU burst time than that of B. Thus, it is incorrect to think that SJF favours I/O bound processes.
But, as I/O bound processes spend more time doing I/O than CPU, they will be sent to the waiting state more often.
(It has nothing to do with CPU scheduling as CPU scheduling is handled by Short Term Scheduler and waiting state is handle by Medium Term Scheduler). Once a process in waiting finishes its I/O, it now depends on the CPU Scheduler. Now, if any preemptive algorithm is being used, there are chances that this process will get execution (depending on the criteria). But if any non-preemptive algorithm is being used, this process won't get execution until currently executing process is finished. So, we can say that non-preemptive algorithms (kind of) favour CPU bound processes (as they spend more time at the CPU, so they have to face lower chances of waiting).