已知数组a[n]中的元素为整型,设计算法将其调整为左右两部分,左边所有元素为奇数,右边所有元素为偶数,并要求算法的时间复杂度为O(n)。
时间: 2023-04-23 09:00:46 浏览: 443
剑指Offer(Python多种思路实现):调整数组的顺序使奇数位于偶数前面
算法思路:
1. 定义两个指针left和right,分别指向数组的第一个元素和最后一个元素。
2. 当left指向的元素为奇数时,left向右移动一位;当right指向的元素为偶数时,right向左移动一位。
3. 当left指向的元素为偶数,right指向的元素为奇数时,交换left和right指向的元素。
4. 重复步骤2和3,直到left和right相遇。
算法实现:
void adjustArray(int a[], int n) {
int left = , right = n - 1;
while (left < right) {
while (left < right && a[left] % 2 == 1) {
left++;
}
while (left < right && a[right] % 2 == ) {
right--;
}
if (left < right) {
int temp = a[left];
a[left] = a[right];
a[right] = temp;
}
}
}
时间复杂度为O(n),因为只需要遍历一次数组,每次操作都是常数时间。
阅读全文