zoukankan      html  css  js  c++  java
  • 算法:排序加二分查找

    #冒泡排序
    #1可以将序列中的元素进行两两比较,将两个数比较出的最大值逐步和最小值替换,直到序列中的
    # 最大值找出放置到序列最后的位置
    #2 将上述操作重复执行N次,就可以实现排序

    def sort(alist):
        length = len(alist)
        for j in range(length-1):
            for i in range(length-1):
                if alist[i] > alist[i+1]:
                    alist[i],alist[i+1] = alist[i+1],alist[i]
        return alist
    alist = [3,8,5,7,6]
    print(sort(alist))

    二分查找法 概念:只能作用在有序集合中

    # def findValue(alist, item):
    #     left = 0  #序列中第一个元素下标
    #     right = len(alist) - 1  #最后一个元素下标
    #     find = False
    #     while left <= right:
    #         mid = (left + right) // 2  #中间元素下标
    #         if item < alist[mid]: #查找的值小于中间元素,查找的值存在于中间元素左侧
    #             right = mid - 1
    #         elif item > alist[mid]: #大于中间元素 在中间元素右侧
    #             left = mid + 1
    #         else:
    #             find = True
    #             break
    #     return find
    # alist = [1, 2, 3, 4, 5, 6, 7,8,9,10,11,12]
    # print(findValue(alist, 45))

    #选择排序 概念 将乱序序列最大的值找出,直接将最大值和序列最后的一个元素交换位置,达到最大值放置到序列最后位置的效果

    # def sort1(alist):
    #     # print(len(alist))
    #     for j in range(len(alist)-1):
    #         # print(j)
    #         max_indedx = 0
    #         for i in range(1,len(alist)-j):
    #             # print(i)
    #             if alist[max_indedx] < alist[i]:
    #                 max_indedx = i
    #         alist[max_indedx],alist[len(alist)-j-1] = alist[len(alist)-j-1],alist[max_indedx]
    #     return alist
    # alist = [10,8,9,3]
    # print(sort1(alist))

    #插入排序 概念:需要将无序部分的元素逐一插到有序部分中,最终变为有序序列

    # def sort(alist):
    #     for i in range(1,len(alist)):
    #         while i > 0:
    #             if alist[i] < alist[i-1]:
    #                 alist[i],alist[i-1] = alist[i-1],alist[i]
    #                 i-=1
    #             else:
    #                 break
    #     return alist
    # alist = [5,4,8,7,1,6]
    # print(sort(alist))

     

    #希尔排序:新概念:增量(gap),增量初始的值为乱序序列元素个数除以2
    # 增量的含义:表示间隔,分组的数组
    # 插入排序就是增量为1的希尔排序

    # def sort(alist):
    #     gap = len(alist) // 2
    #     while gap>=1:
    #         for i in range(gap,len(alist)):
    #             while i > 0:
    #                 if alist[i] < alist[i-gap]:
    #                     alist[i],alist[i-gap] = alist[i-gap],alist[i]
    #                     i = i - gap
    #                 else:
    #                     break
    #         gap = gap //2
    #     return alist
    # alist = [5,4,8,7,1,6]
    # print(sort(alist))
  • 相关阅读:
    rsync免密码远程复制文件
    维护中常用的k8s和docker命令
    小程序插件集成functional-page-navigator真机调试报错
    docker私有仓库操作(搭建、运行、添加、删除)
    国内不fq安装K8S四: 安装过程中遇到的问题和解决方法
    国内不fq安装K8S三: 使用helm安装kubernet-dashboard
    国内不fq安装K8S二: 安装kubernet
    国内不fq安装K8S一: 安装docker
    机器学习笔记8:XGBoost
    机器学习笔记7:矩阵分解Recommender.Matrix.Factorization
  • 原文地址:https://www.cnblogs.com/PMXGG/p/13587206.html
Copyright © 2011-2022 走看看