数据结构——数组排序(左奇数、右偶数)

一  重新排列数组使得数组左边为奇数,右边为偶数

学习C语言是为了让大家如何写程序

学习数据结构是为了让大家更简洁、高效的写程序

程序:数据结构+算法

数据结构研究的是数据逻辑结构存储结构及其操作

 1.1给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。

     要求:空间复杂度为0(1),时间复杂度为0(n)。

1.2考查的知识点


(1)数组的基本操作
(2)数组相关的算法设计


二 问题分析


        本题要求将数组元素重排,使得数组左边为奇数,右边为偶数。这有些类似于快速排序的
过程:在快速排序的一趟排序中, 首先指定一个 基准点,然后实现数组元素的一-次划分, 将小
于基准点的元素移动到基准点之前,将大于基准点的元素移动到基准点之后。本题可以借鉴快
速排序算法的思想来解决,数组重排的过程如下:
1)设定两个变量low和high, 作为数组下标分别指向数组第一 个和最后一个元素。
2)循环执行low++操作,直到low指向-一个偶数元素或者low>=high。
3)循环执行high--操作,直到high指向一个 奇数或者high <= low。
4)如果low>= high,则程序结束,此时数组的左边为奇数,右边为偶数;否则将数组中
low指向的元素与high指向的元素交换位置。再重复2)、3)、4)的操作。
下面通过一个实例进- - 步理解该算法,如图所示。




    a为初始状态,数组内容为123456789, 此时low和high分别指向数组第一个元素 和最后- -个元素;图b为循环执行high--,直到high指向了一个奇数,此时high等于3;图c为循环执行low ++,直到low指向了一-个偶数,此时low等于1;因为low小于high,所以将low指向的元素与high指向的元素交换位置,变成d的样子;接下来重复图b、图c、图16- 10d的操作,直到low大于等于
high程序结束。最终数组为135792468 。

三 代码展示

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小气鬼944

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值