苏大真题:给定一顺序线性表,使其满足奇数位为奇数或偶数位为偶数。

本题源于苏州大学872考研真题(2010.5)
给定一个整型元素组成的顺序线性表,设计一个高效的算法重新排列表中的元素,使得偶数位序的元素为偶数或者奇数位序的元素为奇数;即:使得这两个目标至少有一个能满足。

算法思想:设置两个指针i、j,分别指向该顺序表的奇偶位序的第一位,i指针向后寻找第一个奇数位序上的偶数(该过程也是检查奇数位上是否为奇数),j指针向后寻找第一个偶数位序上的奇数。若均存在,则交换两位元素,若任意指针越界,则返回(此时已满足条件,即奇数位均为奇数或偶数位均为偶数)。

代码如下:

void move(SqList &L){int i=0,j=1;while(1){while(L.data[i]%2==0||i>L.length) i+=2;while(L.data[j]%2==1||j>L.length) j+=2;if(i>L.length||j>L.length) break;else exchange(L.data[i],L.data[j]);                                                                                                                                                                                                                                                                                                                                                                                                             }
}

算法缺点:该算法会导致奇数(或偶数)间的相对次序。例如数列2、4、5、7,交换后变为7、4、5、2,奇数间的相对顺序5->7变为了7->5.

满足奇数位为奇数或偶数位为偶数算法相关推荐

  1. 【C语言】用宏实现将一个整数的二进制位的奇数位和偶数位交换

    题目名称 :写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换. 解题思路 : 随便给出一个32个bit位的二进制数字,观察发现,: 我们可以将其奇数位的二进制位都保留,然后偶数位制成0,再右移一 ...

  2. 基础编程题之奇数位(偶数位)都是奇数(偶数)

    文章目录 题目 解题思路 代码 注意 题目 牛客 解题思路 题目的意思是给定一个数组arr,让你调整它,最终这个数组必须满足奇数位上的数字必须是奇数,偶数位上的数字必须是偶数,其中1,3,5,7-算作 ...

  3. 奇数位升序偶数位降序链表排序

    题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的. 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9. 分析: 这道题可以分成三步: 首先根据奇数位和偶数 ...

  4. 奇数位升序偶数位降序的链表进行排序

    题目描述:一个链表,特点是奇数位升序偶数位降序,使得链表变成升序的. 分析 代码 节点类: main方法: 初始化方法: 按照奇偶位拆分成两个链表: 反转链表: 合并两个有序链表(非递归): 合并两个 ...

  5. 题目:输入一个整数a,其个位为第一位,十位为第二位,依次类推,计算a的偶数位的和奇数位的和。

    题目: 输入一个整数a,其个位为第一位,十位为第二位,依次类推,计算a的偶数位的和奇数位的和.例如200628,奇数位的和为8+6+0=14:偶数位的和为2+0+2=4.函数原型可参考此形式:void ...

  6. 奇半数、偶半数—(N的奇半数就是N的奇数位组成的数,N的偶半数就是N的偶数位组成的数(从右侧开始数))

    输入一个正整数N(long long型范围内),输出N的奇半数和偶半数.N的奇半数就是N的奇数位组成的数,N的偶半数就是N的偶数位组成的数(从右侧开始数),例如:1234567的奇半数是1357,偶半 ...

  7. 数组-奇数位上都是奇数或者偶数位上都是偶数(牛客网)

    题目描述: 给定一个长度不小于2的数组arr. 写一个函数调整arr,使arr中要么所有的偶数位上都是偶数,要么所有的奇数位上都是奇数上. 要求:如果数组长度为N,时间复杂度请达到O(N),额外空间复 ...

  8. 写一个宏,可以将一个整数字的奇数位和偶数位交换

    写一个宏,可以将一个整数字的奇数位和偶数位交换 1.过程 2.预处理 3.宏和函数 4.交换奇偶位 1.过程 (1)组成一个程序的每个源文件通过编译过程分别转换成目标代码 (2)每个目标文件由链接器捆 ...

  9. C语言中利用宏,实现一个整数的奇数位和偶数位交换,以及计算结构体中某变量相对于首地址的偏移

    C语言中的自定义宏 自定义宏,令其实现所需功能 1.写一个宏,可以将一个整数字的奇数位和偶数位交换. 2.写一个宏,计算结构体中某变量相对于首地址的偏移. 具体思路1: 首先取出当前数的奇数部分和偶数 ...

最新文章

  1. 69.2. wget - retrieves files from the web
  2. aes key长度_Go 语言 map 解析之 key 的定位核心流程
  3. tp5中mysql使用REGEXP 正则匹配
  4. 手语识别_使用深度学习进行手语识别
  5. linux替换windows回车,转载 vi替换windows换行符为linux换行符
  6. 赚钱第一,投资第二,才是正确的财富获取方式
  7. 数据分析师还是算法工程师|用数据多角度解读如何选择
  8. 无锡室内设计培训——ps难学吗?
  9. 硬链接、软链接、ln命令
  10. v-if 和 v-show的区别 vue面试题
  11. 什么才算是“好的”测试用例?
  12. 第十七届中国计量大学程序设计竞赛 D Dessert Time
  13. AlphaStar的游戏——星际争霸2 AI综述
  14. HTML+CSS(精灵图)实现微信滑动门技术
  15. 凡科建站,PageAdmin,易极赞等自助建站系统的区别
  16. C——Linux下的串口编程
  17. 微博API接口的调用
  18. 从带宏密码保护的Excel文件中导出VBA代码和Sheet
  19. 一个页面引入另一个页面
  20. 完美天空下载站php程序,织梦CMS高仿天空软件站|软件下载站源码整站带数据

热门文章

  1. 常用的HTTP服务压测工具
  2. h5页面置灰处理源代码,兼容IE(优雅降级提供下载浏览器链接)
  3. 从零开始带你开发橙光游戏AVG框架(仿 葬花 )
  4. Oracle 查最后一条记录
  5. springboot私人牙医管理系统[保远程安装配置]
  6. 【Linux】多用户原理 - 用户分类、用户组、uid、gid、主目录
  7. 如何实现一个简单的网络帧同步方案
  8. 计算机组装要哪些硬件,电脑配件,教您电脑组装需要哪些配件
  9. 信号隔离器在供热控制系统中的应用
  10. pyppeteer出现AttributeError: module ‘websockets‘ has no attribute ‘client‘