剑指 Offer 11. 旋转数组的最小数字(qsort函数)(代码+详解)

目录

剑指 Offer 11. 旋转数组的最小数字 

简单介绍一下qsort函数

此题代码 


剑指 Offer 11. 旋转数组的最小数字 

 

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。  

注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof

就是找到数组中最小的元素,有很多方法,我简单的用一下快排函数qsort

简单介绍一下qsort函数

剑指 Offer 11. 旋转数组的最小数字(qsort函数)(代码+详解)_第1张图片

剑指 Offer 11. 旋转数组的最小数字(qsort函数)(代码+详解)_第2张图片自定义比较函数

 

返回值 

剑指 Offer 11. 旋转数组的最小数字(qsort函数)(代码+详解)_第3张图片

简单来说就是:p1 - p2 > 0,就返回大于0的数

                         p1 - p2 < 0,就返回小于0的数

                         p1 - p2 = 0,就返回等于0的数

示例代码 

剑指 Offer 11. 旋转数组的最小数字(qsort函数)(代码+详解)_第4张图片 

 注意:因为形参类型是void*,所以之后要根据需求进行强制类型转换,还要解引用!!!,

           因为返回类型是int,很重要,qsort函数能不能用,它责任很大,别忘了!!!,

           别少 '*' !!!

此题代码 

int cmp_int(const void* s1, const void* s2)
{
    return *(int*)s1 - *(int*)s2;//解引用别忘了
}
int minArray(int* numbers, int sz)
{
    qsort(numbers, sz, sizeof(numbers[0]), cmp_int);
    return numbers[0];
}

你可能感兴趣的:(力扣刷题---剑指,Offer,(c语言解题),数据结构,算法,c语言)