## 数据结构题目–奇数偶数两边站
题目:一个顺序表,存放在数组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--;
}
}