奇偶排序或奇偶换位排序,或磚排序是一种相对简单的排序排序算法时间复杂度,最初发明用于有本地互连的并行计算这是与冒泡排序特点类似的一种比较排序。該排序算法时间复杂度中通过比较数组中相邻的(奇-偶)位置数字对,如果该奇偶对是错误的顺序(第一个大于第二个)则交换。下┅步重复该操作但针对所有的(偶-奇)位置数字对。如此交替进行下去
使用奇偶排序法对一列随机数字进行排序的过程
在并行计算排序中,每个处理器对应处理一个值并仅有与左右邻居的本地互连。所有处理器可同时与邻居进行比较、交换操作交替以奇-偶、偶-奇的順序。该排序算法时间复杂度由Habermann在1972年最初发表并展现了在并行处理上的效率
该排序算法时间复杂度可以有效地延伸到每个处理器拥有多個值的情况。在Baudet
、空间复杂度为N的排序算法时间複杂度可能不是最快的,但能肯定下面两点
1、对于乱序数组如:{10,11,8,2,7,5,0,9,4},可以一次性做到分离奇偶、并且有序。
2、对于含有重复数字、含有大量随机数字的数组此排序算法时间复杂度的性能就能体现出来。
中心思想是:BST的插入
* 二叉排序树的节点类
* 相同关键字出现的次数
* 1、构建根节点、根节点的左子树、根节点的右子树
* 2、遍历数组并调用BST的插入排序算法时间复杂度
* i如果是奇数,插入左子树;否则插入右子树
* 3、插入唍成之后,设置全局变量index分别递归遍历根节点的左、右子树,把关键字放入数组
* 全局变量index,用于把关键字放入目标数组
//依次把关键字放入數组
*在BST中插入一个节点
*和《严蔚敏数据结构》的例题基本一致就是多了个功能:当关键字相同时,相应节点的count++
给定一个存放整数的数组重新排列数组使得数组左边为奇数,右边为偶数 要求:空间复杂度O(1),时间复杂度为O(n)