思路:本题定义两个左右指针,右侧指针定义外循环,左侧指针定义内循环,每次外循环右侧right指针不变,左侧指针left从下标0开始,到right-1,对比Math.pow(arry[left], 2)与Math.pow(arry[right]即下标为left的数据的平方的下标为right的数据的平方的大小,如果Math.pow(arry[left]> Math.pow(arry[right],交换数据,否则left++,一层循环后,right--。
此类题目适宜画图画图画图!!!!!!
package binarySearch; public class squareOfSortedArray { public static void main(String[] args) { int [] arry = {-9,-6,1,3,5,7,10,22}; int jueduizhi [] =jueduizhipaixv(arry); shuchu(jueduizhi); } private static void shuchu(int[] jueduizhi) {//将每个数据平方,输出 for (int i = 0; i < jueduizhi.length; i++) { int pow = jueduizhi[i]* jueduizhi[i]; jueduizhi[i]=pow; System.out.println(jueduizhi[i]); } } private static int [] jueduizhipaixv(int[] arry) {//实现绝对值大小的排序 for (int right = arry.length-1; right>0; right--){ for (int left = 0;left<right-1;left++){ if (Math.pow(arry[left], 2)>Math.pow(arry[right], 2)){ int temp; temp= arry[left]; arry[left]= arry[right]; arry[right]=temp; } } } return arry; } }