【剑指offer】排序数组合并
来源:互联网 发布:java部分中文乱码 编辑:程序博客网 时间:2024/06/03 21:54
题目:
两个排序数组A1和A2,实现算法,将A2中的所有数字插入到A1中,并且所有数字是排序的。
分析:
数组移动与合并首先想到从前往后遍历,可能出现覆盖或多次移动情况,因此常采用从后往前的操作。
实现:
(1)将每位数字比对移动
public int[] insert(int a[],int b[]){int len1 = a.length;int len2 = b.length;int len = len1+len2;int c[] = new int[len];int i=len1-1;int j=len2-1;int clen=len-1;while(i>=0&&j>=0){if(b[j]>a[i]){c[clen--]=b[j--];}else{c[clen--]=a[i--];}}while(i>=0){c[clen--]=a[i--];}while(j>=0){c[clen--]=b[j--];}return c;}注意:比较两个数组,可能在最后出现一个比较完毕,另一个还存在元素,因此要做最终的判断。
(2)使用API实现复制及排序
public void sort() {int[] arr1 = {1, 2, 36,55,77}; int[] arr2 = {10, 20, 30, 40};int[] newArr = new int[arr1.length + arr2.length]; System.arraycopy(arr1, 0, newArr, 0, arr1.length); System.arraycopy(arr2, 0, newArr, arr1.length, arr2.length);for (int i : newArr) {System.out.print(i + ",\t");}}
0 0
- 【剑指offer】排序数组合并
- 剑指offer---数组合并
- [剑指offer]面试题17:合并两个排序的数组
- “举一反三”合并数组--《剑指offer》
- 剑指offer面试题4拓展——已排序数组的合并
- 剑指offer面试题java实现之题4之相关题目:两个排序数组合并
- 【剑指offer】合并有序数组_04.1
- 剑指offer 合并两个数组 java实现
- 《剑指offer》合并两个有序的数组
- 剑指offer-合并排序链表
- 《剑指offer》面试题4(合并数组)
- 合并两个数组(剑指offer延伸题)
- 剑指offer——替换空格&合并数组
- 剑指Offer之合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 【剑指offer】Q17:合并两个排序的链表
- 剑指offer-17:合并两个排序的链表
- 作业四1002
- Android ListView使用BaseAdapter与ListView的优化
- 长度是怎样炼成的(三)
- Lab 4:尝试bootloader
- android之RxJava开发
- 【剑指offer】排序数组合并
- 微信分享到朋友圈失败,分享给朋友等正常
- TortoiseSVN 简单使用说明(老手请绕弯)
- 长度是怎样炼成的(四)
- 8086汇编控制8255实现开关控制LED以及跑马灯
- android studio 集成腾讯信鸽实现特定账号推送
- iOS根据键盘弹出计算键盘高度
- loadrunner进阶——学习二、制定负载测试计划
- Android源码分析之SharedPreferences