You might not even need a classifier.
I would devise a scoring function, based on analysis of the previous data you have. Each user gets a score based on features like
- how many times in the past has this user swapped a shift with somebody else?
- how many times has the user swapped with the current user?
- how many times has the user swapped this particular shift?
For each criterion you add a number of points to the score; the second one might be weighted higher that the first one. Then the person with the highest score is most likely to switch shifts with your current user.
The main question is the design of the scoring function, but I don't think you'd need to go into all the overkill of setting up a classifier; just think which criteria would make someone more likely to swap, and encode them directly. This has the advantage that it's transparent, ie you can always see why someone got recommended, and you can tweak your scoring method if the results are not quite what you'd want. This is often hard to do with ML classifiers.