面试题:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序
2012-05-08 16:42
183 查看
题目:数组al[0,mid-1]和al[mid,num-1]是各自有序的,对数组al[0,num-1]的两个子有序段进行merge,得到al[0,num-1]整体有序。要求空间复杂度为O(1)。注:al[i]元素是支持'<'运算符的。
分析
代码实例:
View Code
1 3 5 7 2 4 5 8 10 1 4 1 2 3 5 7 4 5 8 10 1 5 1 2 3 5 7 4 5 8 10 2 5 1 2 3 5 7 4 5 8 10 3 5 1 2 3 4 5 7 5 8 10 3 6 1 2 3 4 5 7 5 8 10 4 6 1 2 3 4 5 7 5 8 10 5 6 1 2 3 4 5 5 7 8 10 5 7 1 2 3 4 5 5 7 8 10 6 7 1 2 3 4 5 5 7 8 10 7 7
相关文章推荐
- 百度:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序
- 实现一个排序算法,对0~n-1范围内的n个不重复的无序数组进行排序,时间复杂度为O(n),空间复杂度为O(1)。
- 谷歌面试题--一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间
- 一道面试题,对一个数组进行排序,第一个最大,第二个最小,第三个次大,一次类推
- 算法面试题——两个有序数组,将一个数组放入另一个空间很大的数组,要求合并之后依然有序,时间复杂度要求最小,不使用额外的数组。
- 两个有序数组合并为一个及归并排序实例
- 【数据结构】对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序。
- 对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间。原数组为:A,B,C,D,E, 现给定新的位置为3, 0, 1, 4, 2那么排序为D,A,B,E,C
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
- 数组al[0,mid-1]和al[mid,num-1]是各自有序的,对数组al[0,num-1]的两个子有序段进行merge,得到al[0,num-1]整体有序。要求空间复杂度为O(1)。
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
- 已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。 给定一个int数组A,同时给定
- 有两个排序数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2,实现一个函数,把A2 插入到A1,并且是有序的。
- 一道面试题:对一个数组进行排序,要求第一个最大、第二
- js sort方法根据数组中对象的某一个属性值进行排序
- 有一个数组,包含10个整数,编写代码对前5个数进行升序排序,后5个数进行降序排序。
- 归并排序的空间复杂度为什么是O(n)?快速排序的空间复杂度为什么是O(log2n)?
- 实现一个数组中奇数和偶数分开,奇数在前部分,偶数在后部分 时间复杂度为O(n),空间复杂度为O(1)
- 将一个长度不定数组按照自定义标准进行排序