The major task of an operating system is to manage a collection of processes, in what is known as a CPU scheduling. In this study, a new CPU scheduling algorithm called Best-Job-First is suggested by mixing the functions of some well-known basic scheduling algorithm. When applying the suggested algorithm, the performance measures promised to use this algorithm for CPU scheduling with a good performance and it`s introduce an easy way to switch between numbers of different scheduling algorithms to satisfy different goals.