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
     
    
  • 相关阅读:
    iOS中Zbar二维码扫描的使用
    SOJ 1135. 飞跃原野
    SOJ 1048.Inverso
    SOJ 1219. 新红黑树
    SOJ 1171. The Game of Efil
    SOJ 1180. Pasting Strings
    1215. 脱离地牢
    1317. Sudoku
    SOJ 1119. Factstone Benchmark
    soj 1099. Packing Passengers
  • 原文地址:https://www.cnblogs.com/tonnyone/p/4950671.html
Copyright © 2011-2022 走看看