快排与归并思想的例题--调整数组顺序使奇数位于偶数前面

阅读 79

2022-02-06

题目:调整数组顺序使奇数位于偶数前面:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前面部分,所有的偶数位于数组的后面部分。要求时间复杂为o(n).

解题思路:

思路一:归并排序里面归并步骤的时候的思想时间复杂度O(n)

与归并排序想法一样都是开辟一个辅助空间

通过current指针移动去判断每一个元素的奇偶性,奇数就填到Left所指位置,偶数的话就填到right所指位置

思路二:快排里面的一遍单项扫描分区法

给这个数组两个指针分别指向头部和尾部,当头指针遇到偶数的时候停下来,然后与尾指针所指的元素交换再判断,直到头指针大于尾指针(两指针交错了,begin>end)

思路三:快排里面的双向扫描分区法

同理,给这个数组两个指针分别指向头部和尾部,头指针一直右移直到遇到偶数 停下来,尾指针一直左移直到遇到奇数停下来,然后交换他们,头指针大于尾指针(两指针交错了,begin>end)就可以停下来了。

精彩评论(0)

0 0 举报