//(复旦2011在职研究生试题数据结构考试)c#版
//一整数数组,要求奇数排在偶数前面,并且时间复杂度为O(n),并要求写出思路
static void test1()
{
int[] a = { 1, 2, 4, 3, 6 };
int start = 0;
int temp;
int end = a.Length - 1;
int num = 0;
bool flag = true; //i是否前进标准位
while (start != end)
{
if ((a[start] % 2 == 0)) //偶数
{
if (a[end] % 2 != 0) //如果前面是偶数后面是奇数,交换
{
temp = a[start];
a[start] = a[end];
a[end] = temp;
flag = true;
}
else
{
flag = false;
}
end--;
}
if(flag)
start++;
//统计用了多少次
num++;
}
//输出结果
for (int i = 0; i < a.Length; i++)
{
Console.Write("{0}{1}", a[i], " ");
}
Console.WriteLine();
Console.WriteLine(num);
}
分享到:
相关推荐
例如,对于输入数组 `[3, 1, 2, 4]`,期望的输出可以是 `[2, 4, 3, 1]`、`[4, 2, 3, 1]` 或者 `[2, 4, 1, 3]`,只要满足偶数在前,奇数在后的条件即可。 下面是一个简单的 C 语言实现,它使用了双指针策略: ```c ...
在给定的数组中,将奇数元素排列在前,偶数元素排列在后。答案采用冒泡排序的思想,使用双层循环,将奇数元素浮到前面。 题 2:数组最大元素个数 知识点:数组操作、遍历 该题目要求返回数组中最大元素的个数。...
- 原地操作:如果允许改变原线性表的顺序,可以在遍历过程中将奇数和偶数分别移到表的前半部分和后半部分,然后分割成两部分。 4. **C++编程相关**: - 文件名列表中的`.cpp`文件是C++源代码文件,用于编写实现...
这样,无论原序列中的奇数和偶数是如何交错的,都能保证排序后的序列符合题目要求。 此外,为了优化算法,还可以考虑以下几点: 1. 使用位运算:通过位运算判断数字的奇偶性(如`num & 1`),这比使用除法或模运算...
题目2:数组排序 这道题目考察了考生的算法思维和编程能力。题目要求将一个数组中的最大元素放到输出数组的中间位置,如果数组长度为奇数,则将最大元素放到中间位置,如果数组长度为偶数,则将最大元素放到中间偏...
5. 第五题要求对奇数和偶数分别进行升序排序,奇数在前,偶数在后。在BubbleSort函数中,可以先找出所有奇数,然后对这些奇数进行冒泡排序,接着找出所有偶数并进行排序,最后将奇数和偶数合并。具体实现未给出,但...
题目14:调整数组顺序使奇数位于偶数前面 这题需要将数组中的奇数和偶数分开,但保持原有顺序。可以使用两个指针,一个从头开始,一个从尾开始,分别处理奇数和偶数。 题目15至24:这些题目可能包括了更多的二叉树...
3. 求偶数和:与求奇数和类似,但需修改条件判断。 4. 打印四位数的每一位:涉及数组、循环和格式化输出。 5. 倒序输出:需要理解取模运算和整数除法。 6. 打印特定条件的数:涉及逻辑运算和条件语句。 7. 逆序打印...
2. 输入10个数,将10个整数按生序排列输出,并且奇数在前,偶数在后。 Java知识点:数组处理、排序算法 3. 将数组a[n]的每一个元素依次循环向后移动一位。 Java知识点:数组处理、循环操作 4. 将输入数组a[n]中...
在给定的编程任务中,我们面临一个有趣的数组排序问题,该问题涉及到JavaScript语言和算法设计。题目要求我们将一个非负整数数组A按照特定规则进行排序:奇数元素必须位于奇数索引上,偶数元素则位于偶数索引。这个...
+ 知识点:结构体、数组排序 * 题目 3:冒泡排序 + 知识点:排序算法、冒泡排序 * 题目 4:建立二叉树,并中序遍历 + 知识点:二叉树数据结构、树遍历算法、中序遍历 * 题目 5:生成一个长度为 21 的数组,依次...
37. 奇数偶数分离:数组元素的分类存储。 38. 未给出完整信息,但通常涉及数组操作或字符串处理。 以上知识点涵盖了C语言的基础语法、数据结构、算法和文件操作,这些都是计算机二级考试C语言部分的重点内容。通过...
这个题目要求我们实现一个功能,即对一个整数数组按照奇偶性进行排序,使得所有奇数位于前半部分,偶数位于后半部分,同时保持原有奇数和偶数内部的相对顺序。 首先,我们需要理解LeetCode是什么。LeetCode是一个...
在本压缩包“php-leetcode题解之按奇偶排序数组2.zip”中,主要包含的是使用PHP语言解决LeetCode算法题目的代码实现,题目要求是将一个整数数组按照奇偶性进行排序,即所有奇数位于前面,偶数位于后面。这个任务涉及...
- **合并结果**:按照题目要求(奇数先于偶数、交叉排列)将排序后的数组重新组合成一个新数组。 #### 3.2 **数据组织与处理** - **数组的划分与重组**:通过对数组进行分割,分别处理后再合并的方式,可以有效地...
18. **数组排序与筛选**:题目2的奇数在前偶数在后的排序、题目18的奇数和偶数统计都需要对数组进行操作。 19. **模式生成**:题目16的字符计数和题目5的方阵构建涉及到特定的输出模式。 以上知识点涵盖了C语言的...
特殊排序可能是指非标准的排序规则,如奇数在前偶数在后,或者按特定条件排序,考生需要灵活运用已学的排序算法。 7. **二次排序问题(2%)**: 二次排序可能是指对已排序的数据进行二次处理,比如对已排序的数组...