C语言——oj刷题——调整数组使奇数全部都位于偶数前面

简介: C语言——oj刷题——调整数组使奇数全部都位于偶数前面

题目:

输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

一、实现方法:

当我们需要对一个整数数组进行调整,使得奇数位于数组的前半部分,偶数位于数组的后半部分时,可以使用以下方法来实现。


首先,我们可以定义两个指针,一个指向数组的开头,一个指向数组的末尾。然后,我们可以使用循环来遍历数组,直到两个指针相遇为止。在每次循环中,我们检查当前指针指向的数字是否为奇数。如果是奇数,则将指针向后移动一位。如果是偶数,则将两个指针指向的数字进行交换,并将两个指针分别向前和向后移动一位。


二、以下是用C语言实现该功能的代码示例:

#include <stdio.h>
 
void adjustArray(int arr[], int length) {
    int left = 0; // 左指针
    int right = length - 1; // 右指针
 
    while (left < right) {
        // 左指针指向的数字为奇数,向后移动左指针
        while (arr[left] % 2 != 0) {
            left++;
        }
 
        // 右指针指向的数字为偶数,向前移动右指针
        while (arr[right] % 2 == 0) {
            right--;
        }
 
        // 交换左右指针指向的数字
        if (left < right) {
            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
        }
    }
}
 
int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int length = sizeof(arr) / sizeof(arr[0]);
 
    printf("原始数组:");
    for (int i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
 
    adjustArray(arr, length);
 
    printf("\n调整后的数组:");
    for (int i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
 
    return 0;
}

上述代码中,我们首先定义了一个名为adjustArray的函数,它接受一个整数数组和数组长度作为参数。在函数中,我们使用了两个指针来遍历数组,将奇数和偶数进行交换。然后,在main函数中,我们定义了一个整数数组,并调用adjustArray函数来调整数组的顺序。最后,我们打印出调整后的数组。


三、运行结果

希望这篇博客能够帮助您理解如何通过C语言完成输入一个整数数组,实现一个函数来调整数组中数字的顺序使得奇数位于数组的前半部分,所有偶数位于数组的后半部分。如果您有任何问题,请随时提问。

相关文章
|
4月前
|
存储 人工智能 程序员
一文彻底搞明白C语言的数组
本文详细介绍了C语言中的数组,包括定义、初始化(静态与动态)、存储方式、访问方法及常用操作,如遍历、修改元素和作为函数参数传递。数组是C语言中最基本的数据结构之一,掌握它对编程至关重要。下篇将介绍二维数组,敬请期待!
207 0
一文彻底搞明白C语言的数组
|
6月前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
439 6
|
7月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
169 5
|
7月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
算法 编译器 程序员
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
C语言学习笔记(数组<2>+图解+题例+三子棋游戏<初级>)
170 0
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
|
存储 C语言
C语言学习笔记—P10(数组<1>+图解+题例)
C语言学习笔记(数组<1>+图解+题例)
238 0
C语言学习笔记—P10(数组<1>+图解+题例)
|
C语言
C语言学习笔记——数组(二)
C语言学习笔记——数组
220 0
C语言学习笔记——数组(二)
|
C语言
C语言学习笔记——数组(一)
C语言学习笔记——数组
195 0
C语言学习笔记——数组(一)
|
机器学习/深度学习 C语言 编译器
【C语言】学习笔记4——数组
我直接把控制语句和循环跳过了。大致看了一下,讲得太繁琐了。这部分在后面用C写数据结构就可以练得很熟了。 1. 数组: 由数据类型相同得一系列元素组成。内存上是一片连续得存储单元。 2. 声明 int nums[5] // 内含5个int类型元素的数组 float ...
1023 0
|
5月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
292 23