## 数据结构题目–奇数偶数两边站
题目:一个顺序表,存放在数组a[]中,元素的类型为int型,顺序表的长度为n。设计算法调整a,使得左边的所有元素为奇数,右边的所有元素为非奇数。要求时间复杂度为O(n),空间复杂度为O(1)。
个人理解:利用双指针遍历把不符合条件的元素找出,然后进行交换。
在这里插入代码片
void quickSwapList(int a[],int n)
{
int i = 0,j = n-1; //n为顺序表的长度
while(i < j)
{
while(a[i] % 2 == 1 && i < j) i++;//找到左边的非奇数
while(a[j] % 2 == 0 && i < j) j++;//找到右边的奇数
if(i < j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
i++;
j--;
}
}
本文介绍了一个数据结构题目,目标是在O(n)的时间复杂度和O(1)的空间复杂度下,将一个顺序表中的所有奇数元素移至左侧,所有非奇数元素移至右侧。通过使用双指针技术,该算法有效地实现了这一目标。
9533

被折叠的 条评论
为什么被折叠?



