zoukankan      html  css  js  c++  java
  • 初级排序算法python版

    选择排序:假设首项最小,和后边n-1项对比找出最小的,交换。。。

    假设第i项是第i小的​,和后边n-i项对比找出第i小的,交换,直至全部有序。

     1 import random
     2 
     3 def select_sort(list):
     4     if len(list) != 0 or 1:
     5         for i in range(len(list)-1):
     6             min = i
     7             for j in range(i+1, len(list)):
     8                 if list[min] > list[j]:
     9                    #list[min], list[j] = list[j], list[min]
    10                     min = j
    11             list[min], list[i] = list[i], list[min]
    12 
    13 if __name__ == '__main__':
    14     list1 = [2, 3, 5, 7, 8, 9, 6, 54, 1, 42]
    15     random.shuffle(list1)
    16     print(list1)
    17     select_sort(list1)
    18     print(list1)

    冒泡排序:从第n项开始与前一项对比,小的放在前​,大的在后,依次比较交换,最小的将出现在第一项,从最后开始重复,直至全部有序。

     1 def bubble_sort(list):
     2     if list != None:
     3         if len(list) != 1:
     4             for i in range(len(list)):
     5                 for j in range(len(list)-1-i):
     6                     if list[j] > list[j+1]:
     7                         list[j], list[j+1] = list[j+1], list[j]
     8 
     9 if __name__ == '__main__':
    10     list1 = [223, 12, 344, 46, 678]
    11     bubble_sort(list1)
    12     print(list1)

    插入排序:假设前i项从小到大有序,拿 i+1向前比较,小则向前交换,找到i+1合适的位置,依次对i+2等进行同样操作,直至末项。

     1 import random
     2 
     3 def insert_sort(list):
     4     if len(list) != 0 or 1:
     5         for i in range(1, len(list)):
     6             j = i
     7             while j >= 1 and list[j] < list[j-1]:
     8                 list[j], list[j-1] = list[j-1], list[j]
     9                 j -= 1
    10 
    11 if __name__ == '__main__':
    12     list1 = [5, 42, 9, 2, 1, 7, 8, 54, 3, 6]
    13     random.shuffle(list1)
    14     print(list1)
    15     insert_sort(list1)
    16     print(list1)

    希尔排序:​假设h有序数组的前i项从小到大有序,拿 i+h向前比较,小则向前交换,找到i+h合适的位置,依次对i+2h等进行同样操作,直至末项。把整个数组重新分为h//2的有序数组,重复,直至h//2n为1,这时相当于插入排序。

     1 import random
     2 
     3 def shell_sort(list):
     4     step = len(list) // 2
     5     while step > 0:
     6         for i in range(step, len(list)):
     7             while i >= step and list[i-step] > list[i]:
     8                 list[i-step], list[i] = list[i], list[i-step]
     9                 i -= step
    10         step //= 2
    11 
    12 if __name__ == '__main__':
    13     list1 = [2, 3, 5, 7, 8, 9, 6, 54, 1, 42, 34, 23, 78]
    14     random.shuffle(list1)
    15     print(list1)
    16     shell_sort(list1)
    17     print(list1)

    新手学习

  • 相关阅读:
    Linux下新建服务
    查看MYSQL日志(包含最近锁表日志)
    Linux后台运行进程
    MYSQL分析慢查询
    Linux下打开超大文件方法
    通过文件列表打包文件
    linux学习笔记<基本知识普及>
    虚拟机的安装
    Android NDK编程,引入第三方.so库
    linux下软件安装与卸载
  • 原文地址:https://www.cnblogs.com/imageSet/p/7441627.html
Copyright © 2011-2022 走看看