这道题目如果学过快速排序的话,就是快速排序的分割的思路(详细可以看挑战程序设计竞赛2)。里面有3个指针,当p指向的数字比0大的时候,与right指向的数字对换,这样大于0的数字排在了right的右边,而原来right指向的未知数现在也被p所指着,小于p指向的数与left指向的数对换,这样left的左边就全是小于0的数了,同时p和left两个指针往后移动。那么大于0于小于0的数都处理完了,等于0的数要怎么处理呢,按照之前的思路,left指向的数是小于0的,放在left的左边,同理,right指向的数是大于0的数,放在right的右边,而p是遍历整个数组的元素,所以在p指向的数字为0时,继续向后移动,不交换任何。
总结:这个是算法快速排序的初级变式,还算简单
【蓝桥杯2013C/C++省赛真题】——三部排序
最新推荐文章于 2024-04-14 19:47:38 发布