考研数据结构(每日一题)
题目:已知线性表按顺序存储,且每个元素都是不相同的整数型元素,设计所有奇数移动到所有偶数前面的算法。
算法思想:
使用快速排序思想,假设表为L[1…n],先从前向后找到一个偶数元素L(i),再从后向前找到一个奇数元素L(j),将二者交换,重复上述操作直到i大于j。
完整代码:
void move(ElemType A[],int len){
int i = 0; //i表示左端偶数元素的下标
int j = len - 1; //j表示右端奇数元素的下标
while (i < j)
{
while (i < j && A[i] % 2 != 0)
{
i ++; //从前向后找到一个偶数元素
}
while (i < j && A[j] % 2 != 1)
{
j --; //从后向前找到一个奇数元素
}
if (i < j)
{
swap(A[i],A[j]); //交换这两个元素
i ++;
j --;
}
}
}
该博客分享了一种针对顺序存储线性表的算法,旨在将所有奇数元素移动到偶数元素之前。利用快速排序的思想,从两端同时查找,依次交换奇偶元素,实现列表的重新排列。代码实现中,定义了两个指针i和j,分别从头和尾部开始搜索,直到两者相遇,过程中遇到偶数则向前寻找奇数,反之亦然,然后交换找到的元素。

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



