• 算法-python


    选择排序:一个列表被分为无序列表和有序列表,选择排序就是拿无序列表的第一个和后面的每一个相比较,每一趟选择出最小的一个,添加进有序列表。

    def select_sort(list):
        for i in range(0,len(list)-1): #执行len(list)-1 趟
            min=i
            for j in range(i+1,len(list)):
                if list[j]<list[min]:
                    min=j
            list[i],list[min]=list[min],list[i]
        return list
    list=[5,7,3,2,9,1,6,4]
    print(select_sort(list))

     插入排序:

    # 插入排序
    for j in range(1, len(A)):  # 假设第一个数是排序好的
        key = A[j]  # 取出当前未排序的数
        i = j-1  # 从后往前,先取未排序数的前一个数(已经排序好的数)
        while i >= 0 and A[i] > key:  # 若当前未排序的数比排序好的数还小 并且没有到数组的开头
            A[i+1] = A[i]  # 排序好的数往后挪一个位置
            i = i-1   # 取排序好的数的前一个数进行比较
        A[i+1] = key  # 插入当前要排序的数

     快速排序:

      

    1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
    2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
    3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
    4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
    5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
    def quick_sort(data,left,right):
        if left<right:
            mid=partition(data,left,right)
            quick_sort(data,left,mid-1)
            quick_sort(data,mid+1,right)
    
    def partition(data,left,right):
        tmp=data[left]
        while left<right:
            while left<right and data[right]>=tmp:
                right-=1
            data[left]=data[right]
            while left<right and data[left]<=tmp:
                left+=1
            data[right]=data[left]
        data[left]=tmp
        return left
  • 相关阅读:
    Kerberos协议
    闪电咂摸软件隐喻与建模
    hibernate set集合配置排序
    java小游戏2048实现
    java版餐饮管理系统
    使用HTML5对网页元素进行拖动
    投票网站如何防止机器刷票
    JAVAEE 企业网站建设发布与网站备案流程
    JavaScript 离开页面提醒,在编辑页面常用的关闭提醒功能
    java Swing局域网聊天软件+ 情侣电脑钢琴
  • 原文地址:https://www.cnblogs.com/wxcx/p/9286496.html
Copyright © 2020-2023  润新知