zoukankan      html  css  js  c++  java
  • 常用排序的python实现

    常用排序选择排序,冒泡排序,希尔排序,快速排序,插入排序的python的实现,python的代码量比c/c++少了不少。

     1 def select_sort(sort_array):
     2     for i,elem in enumerate(sort_array):
     3         for j,elem in enumerate(sort_array[i:]):
     4             if sort_array[i]>sort_array[j+i]:
     5                 sort_array[i],sort_array[j+i]=sort_array[j+i],sort_array[i]
     6 
     7 def bubble_sort(sort_array):
     8     for i,elem in enumerate(sort_array):
     9         for j,elem in enumerate(sort_array[:len(sort_array)-i-1]):
    10             if sort_array[j]>sort_array[j+1]:
    11                 sort_array[j],sort_array[j+1]=sort_array[j+1],sort_array[j]
    12 
    13 def insert_sort(sort_array):
    14     for i,elem in enumerate(sort_array):
    15         for j,elem in enumerate(sort_array[:i]):
    16             if sort_array[j]>sort_array[i]:
    17                 sort_array.insert(j,sort_array[i])
    18                 del sort_array[i+1]
    19 
    20 def quick_sort(sort_array):
    21     if(len(sort_array)<2):
    22         return
    23 
    24     left=[x for x in sort_array[1:]if x<sort_array[0]]
    25     right=[x for x in sort_array[1:]if x>=sort_array[0]]
    26     quick_sort(left)
    27     quick_sort(right)
    28 
    29     sort_array[:]=left+[sort_array[0]]+right
    30 
    31 def shell_sort(sort_array):
    32     dist=len(sort_array)/2;
    33 
    34     while(dist>0):
    35         for i in range(dist,len(sort_array)):
    36             tmp=sort_array[i]
    37             j=i
    38             while(j>=dist and sort_array[j]<sort_array[j-dist]):
    39                 sort_array[j],sort_array[j-dist]=sort_array[j-dist],sort_array[j]
    40                 j-=dist
    41         dist/=2
    42 
    43 def algo_sort_test(sort_array,sort_func):
    44     sort_func(sort_array)
    45 
    46 if __name__=='__main__':
    47     array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23]
    48     algo_sort_test(array,bubble_sort)
    49     print array
    50     array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23]
    51     algo_sort_test(array,insert_sort)
    52     print array
    53     array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23]
    54     algo_sort_test(array,quick_sort)
    55     print array    
    56     array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23]
    57     algo_sort_test(array,shell_sort)
    58     print array        
  • 相关阅读:
    Python3中urllib使用介绍
    python urllib和urllib3包
    Python--urllib3库
    Python基础-变量作用域
    Python 面向对象三(转载)
    Python 面向对象二(转载)
    Python 面向对象一(转载)
    YAML 在Python中的应用
    Redis 命令二
    基于Redis的Bloomfilter去重(转载)
  • 原文地址:https://www.cnblogs.com/lkprof/p/3107595.html
Copyright © 2011-2022 走看看