在学习Java的时候,本人发现对于有序的奇数数组与有序的偶数数组(不含0且为正整数),如果想让它并成一个从小到大的有序数组可以用两个方法:
1.经典的for方法:定义一个变量a,使其在总数组的长度下用if语句对其进行判断,a%2==0的时候,总数组对应的i赋值偶数数组的值,相反,赋值奇数数组的值。
2.双指针方法:定义一对变量:a,b,其中a为快指针,b为慢指针,使用while语句(结束语句是i<总数组的长度)进行循环,用一个if语句对快慢指针进行判断,当快指针=慢指针的时候,将总数组的i区赋值给快指针的对应值(快指针对应的是奇数数组),不等时,将总数组的i区赋值给慢指针的对应值(慢指针对应的是偶数数组)(注:边界问题要注意,是对比快慢指针对应的数组的大小而不是快慢指针本身,这里只用对比快慢指针是因为对与有序奇偶数组来说,同一索引下的奇数总比偶数大)
在面对于两个数组合并成一个数组的时候,我们常常用暴力算法的思路来求解,但对于有序数组来说,用双指针会将时间复杂度从O(n²)变到O(n)