zoukankan      html  css  js  c++  java
  • 排序的三个基础算法 (python实现)

    排序的三个基础算法 (python实现)#

    自己动手丰衣足食

     
    #!/usr/bin/env python
    # coding=utf-8
     
    ''' 一系列排序算法 ,快速,冒泡 (插入排序实现有点糙,改天修改一下)'''
     
    import types
    import logging
     
    #插入排序 可以继续优化模拟不变数组的方式
    def insertSort(arr):
        if isinstance(arr,(types.ListType)) and len(arr)>1:
     
            length = len(arr)
            #初始化一个新数组大小和原始一样大
            newarr = [None]*length
            #指向新数组的尾部
            numpoint = 1
            newarr[0] = arr[0]
            #循环原始数组
            for id in range(1,len(arr)):
                #循环新生成数组
                for j in range(numpoint):
                    #拿出原始数据每个和新数组的每个比较
                    #如果比它大 是最后一个则加到新数组里
                    if arr[id]>=newarr[j]:
                        if j+1==numpoint:
                            newarr[numpoint]=arr[id]
                            numpoint=numpoint+1
                            break;
                        else:
                            continue
                    #如果比它小 则让新数组后面的依次往后换位
                    else:  
                        temp = arr[id]
                        numpoint = numpoint +1
                        for x in range(j,numpoint):
                            newarr[x],temp = temp,newarr[x]
                        break;
            return newarr
        else:
            logging.warning("not a arr at all")
            return None
     
    #冒泡排序
    def bubbleSort(arr):
        if isinstance(arr,(types.ListType)) and len(arr)>1:
            #第一遍循环交换
            for id in range(len(arr)-1):
                #第二遍循环交换
                for j in range(len(arr)-id-1):
                    if arr[j]>arr[j+1]:
                        arr[j],arr[j+1]=arr[j+1],arr[j];
            return arr
        else:
            logging.warning("not a arr at all")
            return None    
     
    #选择排序
    def selectSort(arr):
        if isinstance(arr,(types.ListType)) and len(arr)>1:
            for id in range(len(arr)-1):
                #初始化一个tempindex 存放每次最小的地址
                tempindex = id;
                for j in range(id,len(arr)-1):
                    if arr[tempindex] > arr[j+1]:
                        tempindex = j+1
                if tempindex != id:
                    arr[id],arr[tempindex]=arr[tempindex],arr[id]
            return arr
        else:
            logging.warning("not a arr at all")
            return None
     
    
  • 相关阅读:
    hive之窗口函数
    linux环境下Mysql的卸载和重新安装和启动
    2017ACM暑期多校联合训练
    2017ACM暑期多校联合训练
    状态压缩dp
    铺砖问题 (状态压缩dp)
    POj 2104 K-th Number (分桶法+线段树)
    POJ 2991 Crane (线段树)
    4 Values whose Sum is 0 POJ 2785 (折半枚举)
    Billboard HDU 2795 (线段树)
  • 原文地址:https://www.cnblogs.com/tonnyone/p/4950671.html
Copyright © 2011-2022 走看看