题目:数组al[0,mid-1]和al[mid,num-1]是各自有序的,对数组al[0,num-1]的两个子有序段进行merge,得到al[0,num-1]整体有序。要求空间复杂度为O(1)。注:al[i]元素是支持'<'运算符的。

分析

代码实例:

View Code

新的解体思路

设定两个指针left和right,初始状态下分别指向两个排序数组的首元素,

然后比较a[left]和a[right]大小,

  1. 如果a[left]<=a[right],那么数组中元素位置不发生改变,然后left往前进一步。
  2. 如果a[left]>a[right],则表明前半段元素中存在大于后半段的元素,那么我们将后半段这个小的元素移到前半段来。但是在移动之前,我们得为这个元素空留出地方。这就有了元素移动的操作。比如{1,3,5,7,2,4,6,8,10}这样子序列,我们发现后半段的2小于前半段的3,那么我们将2放入临时变量temp中,然后将{3,5,7}往后移动一个位置,然后将空出来的位置放入temp的值。
  3. 这里总体的循环是while(left<right&&right<len)

代码实现

View Code

上面程序的输出结果是

View Code

本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/05/08/2490343.html,如需转载请自行联系原作者

面试题:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序...相关推荐

  1. 百度:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序

    一.题目理解 题目:数组al[0,mid-1]和al[mid,num-1]是各自有序的,对数组al[0,num-1]的两个子有序段进行merge,得到al[0,num-1]整体有序.要求空间复杂度为O ...

  2. C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

    1. 题目 请编写一个函数function,它的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后. 2 .温馨提示 C语言试题汇总里可 ...

  3. 面试题36:数组中的逆序对

    题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数.例如,有一个数组为Array[0..n] 其中有元素a[i],a[j]. ...

  4. 二维数组的空间复杂度_剑指 offer 面试题精选图解 04 . 二维数组中的查找

    点击关注上方"图解面试算法", 设为"置顶或星标",一起刷 LeetCode. 作者:程序员吴师兄 今天分享的题目来源于 LeetCode 上的剑指 Offer ...

  5. 2021年场(厂)内专用机动车辆安全管理新版试题及场(厂)内专用机动车辆安全管理模拟考试题

    题库来源:安全生产模拟考试一点通公众号小程序 场(厂)内专用机动车辆安全管理新版试题是安全生产模拟考试一点通总题库中生成的一套场(厂)内专用机动车辆安全管理模拟考试题,安全生产模拟考试一点通上场(厂) ...

  6. 不懂就问系列,为什么别人能靠这份面试题宝典去大厂?(内附面试题答案)

    就目前的一线企业面试模式来讲,尤其是一面与二面都涉及到很深的Java基础功底及知识面,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直 ...

  7. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  8. 图解面试题:找出数组中重复的数字?

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

  9. 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

最新文章

  1. 通过exe启动class
  2. drop table中cascade的含义及用法
  3. C#.net 支付宝接口
  4. android 代码获取屏幕图像,安卓获取屏幕以及获得像素点 ~ 大树洞
  5. 三、MyBatis 使用传统 Dao 开发方式
  6. oracle修改窗口字体大小,jQuery之字体大小的设置方法
  7. sequel pro mac_Mac手绘插画绘图软件推荐
  8. 【火炉炼AI】机器学习045-对股票数据进行隐马尔科夫建模
  9. sqlmap安装和使用
  10. 不服!女性为何成为科技领域的“隐形人”?讲讲崛起中的“她”力量
  11. BOM物料管理在PLM系统中的应用
  12. Ubuntu18.04 下载的cuda10.1与未安装完全的nvidia-cuda-dev_9.1发生冲突,卸载
  13. w ndows7旗舰版镜像下载,win7旗舰版32位原版iso
  14. markdown格式转wiki格式(文件格式转换)
  15. Ubuntu垃圾箱目录及清空
  16. android xml加密解密,华为配置加解密工具
  17. 关于Ubuntu启动activeMq无效果的错误解决方案
  18. sql2000安装成功但是服务器显示为空,安装sql2000时出现“安装程序配置服务器失败”...
  19. vb6不支持多重接口继承
  20. python一行代码_一行有效python代码

热门文章

  1. WebRequest msdn整理
  2. [unity3d]自定义鼠标指针
  3. Herev Falciani推出新的加密货币和区块链项目
  4. VC实现多格式图像的转换
  5. linux系统设置服务开机启动3种方法,Linux开机启动程序详解
  6. Magento 2.0 Alipay Cross-Border Mobile Payment Extension - Magento 2.0 支付宝跨境支付手机版...
  7. 如何配置YUM本地更新源
  8. filezilla的root账户无法连接服务器解决办法
  9. idea 添加配置文件 绿叶子
  10. Android 中的线程池