算法思想:
假设有两个人,每人手里都有一部分牌,而且每个人手中的牌都按大小顺序排列好了。
那么,现在要把两个人手中的牌合并到一起,并且合并后要从小到大依次排好,可以这样做:
每个人都从手中拿出最小的牌,然后比较,谁的牌小就把该张牌放在桌面上,牌大的一方牌仍然拿在手中,待下次再比较。
下一次每个人又拿最小的牌进行比较,如此下去。。。直到一方手中的牌全部放在了桌面上,这时另一方就可以把牌按从小到大的顺序全部放在桌面上了。
这时,桌面上的牌显然是排好了序的。
这就是归并排序法的主要思想。当然,有归并,首先就得分割,得把手中的牌分到两个人手中,然后分到四个人手中。。。
一直分到每人手中只有一张牌。然后才可以每两个人进行合并,最后合并到一个人的手中。
c++实现: