美文网首页
python实现常用排序算法

python实现常用排序算法

作者: 这个手刹丶不太灵 | 来源:发表于2017-08-03 16:51 被阅读0次

*排序算法

ordersummary

冒泡排序

原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。

def buttle_sort(l1):
    for i in range(len(l1)-1):
        flag = True
        for j in range(len(l1)-1-i):
            if l1[j] > l1[j+1]:
                l1[j],l1[j+1] = l1[j+1],l1[j]
                flag = False
        if flag:
            #某次内层循环没有交换,直接返回list
            return l1
    return l1

选择排序

原理:将后面的元素最小元素一个个取出然后按顺序放置

def selection_sort(l1):
    for i in range(len(l1)):
        min = i                      #最小元素下标
        for j in range(i+1,len(l1)):
            if l1[j] < l1[min]:
                min = j              #最小值下标
        l1[i],l1[min] = l1[min],l1[i]
    return l1

插入排序

原理:插入排序的工作原理是,对于每个未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

def insert_sort(l1):
    n = len(l1)
    for i in range(1,n):
        if l1[i] < l1[i-1]:
            temp = l1[i]
            index = i           #待插入下标为index的元素
            for j in range(i-1,-1,-1):    #从i-1循环到0(包括0)
                if l1[j] > temp:
                    l1[j+1]     = l1[j]
                    index = j   #记录待插入下标
                else:
                    break
            l1[index] = temp
            print('L1~~~~~~~~%s ' % l1)
    return l1

希尔排序

原理:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。

最后整个表就只有一列了。将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序。

def shell_sort(ary):
    n = len(ary)
    #初始步长 , 用round四舍五入取整
    gap = round(n/3) 
    while gap > 0 :
        print('gap %s' % gap)
        for i in range(gap,n): #每一列进行插入排序 , 从gap 到 n-1
            temp = ary[i]
            j = i
            while ( j >= gap and ary[j-gap] > temp ): #插入排序
                ary[j] = ary[j-gap]
                j = j - gap
            ary[j] = temp
        print(ary)
        gap = round(gap/3)  #重新设置步长
    return ary
### 13 14 94 33 82
### 25 59 94 65 23
### 45 27 73 25 39
### 10

l1= [ 13, 14, 94,33 ,82, 25, 59,94, 65, 23, 45, 27, 73, 25, 39, 10 ]
print(shell_sort(l1))

快速排序

原理:

相关文章

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • Python一行代码实现快速排序

    上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • 常用排序算法

    常用的排序算法 在此总结一下常用排序算法的代码实现 #include using namespace std;t...

  • python实现常用排序算法

    *排序算法 冒泡排序 原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 选择排序 原理:将后面的元素最...

  • python实现常用排序算法

    所谓排序,就是将数据分为有序区和无序区,通过对无序区元素的调整并扩展有序区,最后达到所有元素都有序的状态。在排序界...

  • Python实现常用排序算法

    1、冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的...

  • 常用的排序算法

    常用的排序算法(PHP实现)_慕课手记

  • 第三章:高级排序算法

    归并排序算法(mergeSort) 算法思想:Python使用函数实现: 自底向上的归并排序算法 算法思想:Pyt...

网友评论

      本文标题:python实现常用排序算法

      本文链接:https://www.haomeiwen.com/subject/inbplxtx.html