查找和排序

题目描述:旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

Python测试:

// An highlighted block

# class Solution:
#     def minNumberInRotateArray(self, rotateArray):
#         # write code here
#         if len(rotateArray) == 0:
#             return 0
#
#         ret = rotateArray[0]
#         if len(rotateArray) == 1:
#             return ret
#
#         for i in range(1, len(rotateArray)):
#             now = rotateArray[i]
#             if now < ret:
#                 ret = now
#                 break
#
#         return ret

class Solution:

    def MinInOrder(self, rotateArray, left, right):
        res = rotateArray[left]
        for i in range(left, right+1):
            if res > rotateArray[i]:
                res = rotateArray[i]
        return res

    def minNumberInRotateArray(self, rotateArray):
        # write code here
        lenArr = len(rotateArray)
        left, right = 0, lenArr-1
        while left <= right:
            if right - left == 1:
                return rotateArray[right]
            mid = (left + right)//2
            if rotateArray[left] == rotateArray[mid] \
            and rotateArray[mid] == rotateArray[right]:
                return self.MinInOrder(rotateArray, left, right)
            if rotateArray[mid] >= rotateArray[left]:
                left = mid
            elif rotateArray[mid] <= rotateArray[right]:
                right = mid
        return rotateArray[right]


if __name__ == "__main__":

    a = Solution()
    num = [3,4,5,1,2]

    data = a.minNumberInRotateArray(num)
    print(data)

知识点回顾:

查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。

查找表(Search Table):由同一类型的数据元素(或记录)构成的集合
关键字(Key):数据元素中某个数据项的值,又称为键值。
主键(Primary Key):可唯一地标识某个数据元素或记录的关键字。

查找表按照操作方式可分为:

静态查找表(Static Search Table):只做查找操作的查找表。它的主要操作是:
查询某个“特定的”数据元素是否在表中
检索某个“特定的”数据元素和各种属性
动态查找表(Dynamic Search Table):在查找中同时进行插入或删除等操作:
查找时插入数据
查找时删除数据
https://www.cnblogs.com/feixuelove1009/p/6148357.html

总结:

旋转数组的最小数字:
https://blog.csdn.net/qq_38441207/article/details/88648118

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值