给一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序 排序。
示例 :
输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]
实例一:
#includeint const numsize = 5; int main() { int nums[] = {-4,-1,0,3,10}; for (int sum = 0; sum < numsize; sum++) { nums[sum] = nums[sum] * nums[sum]; } int end = 0; for (int a = 0; a < numsize; a++) { if (nums[a] > nums[a+1]) { end = nums[a]; nums[a] = nums[a+1]; nums[a+1] = end; if (nums[a-1] > nums[a]) { end = nums[a-1]; nums[a-1] = nums[a]; nums[a] = end; } } } for (int zero = 0; zero < numsize; zero++){ printf("%dt", nums[zero]); } }
实例二:
#include#include int const numsize = 5; int main() { int nums[] = {-4,-1,0,3,10}; //创建两个指针,一个指向数组最后一位元素、一个指向第一位元素 int left = 0; int right = numsize - 1; //最后要返回的结果数组 int* anx = (int*)malloc(sizeof(int) * 4); int index; for (index = numsize - 1; index >= 0; index--) { int Ileft = nums[left] * nums[left]; int Iright = nums[right] * nums[right]; if (Ileft > Iright) { anx[index] = Ileft; left++; } else { anx[index] = Iright; right--; } } for (int zero = 0; zero < numsize; zero++){ printf("%dt", anx[zero]); } }



