前言
今天学的内容是排序,先来浅回顾一下之前学的递增排序的内容qsort函数
函数格式:
qsort(nums,numsSize,sizeof(int),compar);
qsort函数的作用:传入一个数组,并按照给定的规则进行就地排序
具体格式:
int compar(const void *p1,const void *p2){
return (*(int *)p1) - (*(int *)p2); //即升序排
}
/* compar函数的功能:
返回值<0,p1所指的元素会被排在p2所指元素的左面.
返回值>0,p1所指的元素会被排在p2所指元素的右面
等于0,随机排
*/
int* sortArray(int* nums, int numsSize, int *returnSize){
qsort(nums,numsSize,sizeof(int),compar);
* returnSize = numsSize; //向编译器报备需要调动多少内存
return nums;
}
一、题目
(1)977. 有序数组的平方
(2)
(3)
二、内容
问题:
给你一个按 非递减顺序 排序的整数数组
nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
int cmp(const void *p1, const void *p2){
return (*(int *)p1) - (*(int *)p2);
}
int* sortedSquares(int* nums, int numsSize, int* returnSize){
int i;
for(i = 0; i < numsSize; ++i){
nums[i] = nums[i] * nums[i];
}
qsort(nums,numsSize,sizeof(int),cmp);
*returnSize = numsSize;
return nums;
}
算法思路:(1)先对原数组的每个元素求平方
(2)再对求完平方后的数组重新排列
三、总结
一天一道循循渐进,顺便回顾之前学过的内容。
加油! 我们一起努力