网站开发售后服务,做网站一般链接什么数据库,通州富阳网站建设,php做的网站论文考察点
双指针遍历数组知识点
题目
分析 要求奇数位于偶数前面#xff0c;如果按照循环遍历的方式#xff0c;可以每找到一个偶数就把该数字后面所有的数都往前移动1位#xff0c;然后把该偶数放在最后空出来的位置#xff0c;这样的时间复杂度是O(n^2)。由于只要求奇数…考察点
双指针遍历数组知识点
题目
分析 要求奇数位于偶数前面如果按照循环遍历的方式可以每找到一个偶数就把该数字后面所有的数都往前移动1位然后把该偶数放在最后空出来的位置这样的时间复杂度是O(n^2)。由于只要求奇数位于偶数前面同时为了降低时间复杂度思维一定要往双指针上靠双指针有快慢指针的形式也有头尾指针的形式双指针遍历数组可以大大提升遍历效率。放在本题目中用头尾指针就可以满足诉求头指针不断后移直到找到一个偶数尾指针不断前移直到找到一个奇数交换二者位置循环进行该过程直到头指针和尾指针相遇
import java.util.Arrays;public class Fourteen {public static void main(String[] args) {int[] arr {4,6,8,1,7,12,77};exchange(arr);System.out.println(Arrays.toString(arr));int[] brr {1,3,5,2,4,6};exchange(brr);System.out.println(Arrays.toString(brr));}public static void exchange(int[] arr) {if (arr null || arr.length 0) {return;}int pStart 0;int pEnd arr.length - 1;while(pStart pEnd) {while(pStart pEnd arr[pStart] % 2 1) {pStart;}while(pStart pEnd arr[pEnd] % 2 0) {pEnd--;}if (pStart pEnd) {int tmp arr[pStart];arr[pStart] arr[pEnd];arr[pEnd] tmp;}}}
}