煎饼排序


煎饼排序

其最优的解法是 NP问题
目前的解决方法是类似选择排序,每次选出一个最大或最小的放到指定的位置

思路与算法
设一个元素的下标是 index,我们可以通过两次煎饼排序将它放到尾部:

  • 第一步选择 k=index+1,然后反转子数组 arr[0…k−1],此时该元素已经被放到首部。

  • 第二步选择 k=n,其中 n 是数组 arr 的长度,然后反转整个数组,此时该元素已经被放到尾部。

  • 如果最大值已经在尾部,则可以省略相应的操作

通过以上两步操作,我们可以将当前数组的最大值放到尾部,然后将去掉尾部元素的数组作为新的处理对象,重复以上操作,直到处理对象的长度等于一,此时原数组已经完成排序。如果最大值已经在尾部,我们可以省略对应的操作。

见leetcode 969

原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/269403.html

(0)
上一篇 2022年6月21日
下一篇 2022年6月21日

相关推荐

发表回复

登录后才能评论