精华内容
下载资源
问答
  • 主要为大家详细介绍了python实现排序算法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python实现排序算法:快速排序、冒泡排序、插入排序、选择排序、堆排序、归并排序和希尔排序 Python实现快速排序 原理  首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它小的放到它...
    Python实现排序算法:快速排序、冒泡排序、插入排序、选择排序、堆排序、归并排序和希尔排序

    Python实现快速排序

    原理

      首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它小的放到它前面,所有比它大的放到它后面,这个过程称为一趟快速排序

      快速排序原理图如下:

    实现

    #coding=utf-8
    
    #python实现快速排序
    def quick_sort(li,start,end):
        if start < end:
            flag = li[start]
            print(flag)
            i = start
            j = end
            print ("i=%d;j=%d" %(i,j))
            b = True
            while(i < j):
                while(li[j] >= flag and j > i):
                    j = j -1
                li[i] = li[j] 
               
                while(li[i] <= flag and j > i):
                    i = i+ 1
                li[j] = li[i]  
                
            li[i] = flag
            print(li)
            quick_sort(li, start, i-1) 
            quick_sort(li, j+1, end) 
            
        
    if __name__ == "__main__":
        li = [30,40,60,10,20,50]
        quick_sort(li,0,len(li) - 1)
        

     

    转载于:https://www.cnblogs.com/xiaobingqianrui/p/8487528.html

    展开全文
  • Python实现排序算法

    2019-10-29 16:14:50
    Python实现排序算法 冒泡排序 def bubbleSort(nums): for i in range(len(nums) - 1): for j in range(len(nums) - i - 1): if nums[j] > nums[j+1]: nums[j], nums[j+1] = nums...

    用Python实现排序算法

    在这里插入图片描述
    在这里插入图片描述

    冒泡排序

    def bubbleSort(nums):
        for i in range(len(nums) - 1): 
            for j in range(len(nums) - i - 1): 
                if nums[j] > nums[j+1]:
                   nums[j], nums[j+1] = nums[j+1], nums[j] 
        return nums
    

    选择排序

    def selectionSort(nums):
        for i in range(len(nums) - 1): 
            minIndex = i
            for j in range(i + 1, len(nums)):
                if nums[j] < nums[minIndex]:  
                   minIndex = j  
            nums[i], nums[minIndex] = nums[minIndex], nums[i] 
        return nums
    

    插入排序

    def insert_sort(alist):
        """插入排序"""
        n = len(alist)
        for j in range(1, n):
            for i in range(j, 0, -1):
                if alist[i] < alist[i - 1]:
                   alist[i], alist[i - 1] = alist[i - 1], alist[i]
                else:
                    break
        return alist
    
    展开全文
  • 使用python实现排序算法中的插入排序。 算法步骤: step 1: 对于第i个数,将它与前面的数字进行比较,如果小于前面的数,那就调换它们的位置,如果不小于前面的数,那就不动。依次进行比较,直到它不小于前面的数...

           使用python实现排序算法中的插入排序。


    算法步骤:

    step 1: 对于第i个数,将它与前面的数字进行比较,如果小于前面的数,那就调换它们的位置,如果不小于前面的数,那就不动。依次进行比较,直到它不小于前面的数或者前面没有数。
    step 2: 从第二个数开始依次执行step 1。


    算法举例:

    对于【3,2,1,5,4】排序

    第一层循环: 待比较数字为2
    比较【3,2】:2<3,调换为【2,3】
    发现前面没有数字,停止,此时【2,3,1,5,4】

    第二层循环: 待比较数字为1
    比较【3,1】:1<3,调换为【1,3】
    比较【2,1】:1<2,调换为【1,2】
    发现前面没有数字,停止,此时【1,2,3,5,4】

    第三层循环: 待比较数字为5
    比较【3,5】:5>3,停止,此时【1,2,3,5,4】

    第四层循环: 待比较数字为4
    比较【5,4】:发现4<5,调换为【4,5】
    比较【3,4】:发现3<4,停止,此时【1,2,3,4,5】


    算法评价:

           我们可以发现插入排序是不需要额外的空间的,所以它的空间复杂度是O(1)O(1)。选择排序也是循环的嵌套,其最坏的时间复杂度是O(n2)O(n^2),但是其最好的时间复杂度是O(n)O(n)

    方法 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度
    插入排序法 O(n2)O(n^2) O(n2)O(n^2) O(n)O(n) O(1)O(1)

    python实现:

    ########################################################
    #####                  插入排序                     #####
    ########################################################
    def charu(nums,order = 1):
        #第一个数不动,从第二个数开始比较
        for i in range(1,len(nums)):
            j=i-1
            tmp = nums[i] #记录本次待比较的词语
            while j >= 0:
                if tmp < nums[j]:
                    nums[j+1] = nums[j]
                    nums[j] = tmp
                    j = j-1
                else:
                    break
        if order == 1:
            return nums
        else:
            return nums[::-1]
    
    In [14]: charu([12,23,34,45,56,87,94,0,9,6,2,7])
    Out[14]: [0, 2, 6, 7, 9, 12, 23, 34, 45, 56, 87, 94]
    In [15]: charu([12,23,34,45,56,87,94,0,9,6,2,7],1)
    Out[15]: [0, 2, 6, 7, 9, 12, 23, 34, 45, 56, 87, 94]
    In [16]: charu([12,23,34,45,56,87,94,0,9,6,2,7],0)
    Out[16]: [94, 87, 56, 45, 34, 23, 12, 9, 7, 6, 2, 0]
    
    展开全文
  • python实现排序 #冒泡排序 data = [5,2,4,1,3] for i in range(len(data)-1): for j in range(len(data)-i-1): if(data[j]>data[j+1]): data[j],data[j+1] = data[j+1],data[j] print("排序后数据为:",data)

    python实现排序

    #冒泡排序
    data = [5,2,4,1,3]
    for i in range(len(data)-1):
        for j in range(len(data)-i-1):
            if(data[j]>data[j+1]):
                data[j],data[j+1] = data[j+1],data[j]
    print("排序后数据为:",data)
    
    展开全文
  • 【循序渐进学Python】运用Python实现排序算法中的冒泡排序(Bubble Sort) 今天我们来讲讲排序算法,通常我们所说的排序算法往往是指内部排序算法. 这个时候就有人问了,那么什么是内部排序算法呢? 内部排序算法就是...
  • python 实现排序算法

    2016-06-22 12:51:00
    python实现插入排序 python实现插入排序 def insertionSort(alist): length = len(alist) for i in range(1,length): temNum = alist[i] c=0 for j in range(i,0,-1): ...
  • 利用python实现排序,并标上序号

    千次阅读 2020-08-20 13:23:24
    需求:利用python实现排序功能 测试数据:data.csv "id","date","amount" "1","2019-02-08","6214.23" "1","2019-02-08","6247.32" "1","2019-02-09","85.63" "2","2019-02-14","943.18" "2","2019-02-15","369.76" ...
  • 使用python实现基数排序,基数排序也是非比较的排序方法,并且它也是基于桶排序的。        基数排序的原理在于把数字按照不同的位切分,首先排序最后一位,然后排序倒数第二位,一直到排序最高...
  • python实现排序算法。桶排序是之前讲过的计数排序的升级版。之前我们说过计数排序不可以用于小数的排序,其最好的用处就是在一个知道范围并且取值都是整数的环境下使用。今天讲的桶排序,可以解决这个问题。桶排序...
  • 使用python实现排序,桶排序和之前我们说过的插入排序,选择排序等都不一样,它是非比较类的排序。前面我们所讲的排序都是两两比较之后交换位置。        桶排序主要的思想:假设我们有n个...
  • python实现排序算法——归并排序

    千次阅读 2019-05-17 11:51:40
    使用python实现归并排序。        归并排序采用的是“分而治之”的思想,也就是将一个待排序的数列分成前后两个部分,对这两个部分分别排序后,在将这两个部分合并到一起。      ...
  • python实现快速排序算法。快速排序算法是现在应用最为广泛的算法,它的执行效率高,并且也不会占用太多额外的空间,相比于堆排序它还更加简单易懂。        快速排序方法的思想在于分而治之,...
  • 使用python实现冒泡排序算法,冒泡排序法是非常经典并且非常简单有效的排序算法。首先我们介绍一下冒泡排序算法。 算法步骤: Step 1: 比较第一个数和第二个数,如果第一个数比第二个数大,那么就调换两个数的...
  • 冒泡排序 需要重复的走访要排序的数列,每次比较相邻的数据,如果顺序错误就把他们进行交换。...#/usr/bin/python #冒泡排序 def maopao_sort(arr): n = len(arr) for i in range(0, n-1): for j
  • 今天复习了排序的有关算法,正好这段时间也在学习Python,就去网上查找了有关排序算法的Python实现。原文请见http://javayhu.me/blog/2014/05/07/python-data-structures---c2-sort/以下贴出代码片段,运行结果如...
  • Python实现排序算法

    2017-09-29 12:08:14
    快速排序def quick_sort(lists, left, right): if left >= right: return lists key = lists[left] low = left high = right while left while left [rig
  • python实现排序算法后续

    千次阅读 2017-02-27 17:26:41
    上一篇因为时间的缘故,没有能写全这几个经典的排序算法,这里补上了三个,其中快排在上一篇中已经出现了,放在这里的原因是:出于对比的目的,归并排序、快速排序、堆排序三个排序算法的时间性能都很优秀,时间...
  • 本篇博客实现的方法都是从小到大排序 一冒泡排序 冒泡排序的原则:重复走访要排序的序列,进行大小比较,如果顺序错误,则把他们交换位置 操作步骤: 1、比较相邻的元素,如果第一个比第二个大,则交换他们两个 ...
  • 好多天都没写了,最近实在太忙了,今天抽空利用python把这三个排序算法实现一下。 一、交换排序 交换排序借鉴了求最小值的思想,n个数要比较n-1轮,每一轮都找出最大值或者最小值,但它的性能相对较低。 例如:...
  • python实现排序算法过程的可视化

    千次阅读 2019-09-05 11:28:25
    背景 今天老师居然布置个实验让我们做个排序算法的可视化出来,给了任务要求和参考代码链接 ...然后我也查了一下资料,发现我们python最熟悉的可视化库matplotlib里面的animation模块也能很好的实现...
  • ##快速排序算法 ##基本思想:分治法,将数组分为大于和小于该值的两部分数据,然后在两部分数据中进行递归排序,直到只有一个数据结束 ## step1: 取数组第一个元素为key值,设置两个变量,i = 0, j = len(a) - 1 ## ...
  • ##归并排序 ##基本思想:对于两个排好序的数组A和B,逐一比较A和B的元素,将较小值放入数组C中,当A或者B数组元素查询完后,将A或者B剩余的元素直接添加到C数组中,此时C数组即为有序数组,这就是归并排序原理 ##...
  • 插入排序基本思想:假设一个无序数组A,则对于只有一个元素A[0]的子数组C来讲,其是有序的,然后将A[1]插入到C中,则就是将A[1]与A[0]进行比较,如果A[1]比A[0]小,则交换两者的顺序,这里假设是升序排序。...
  • 和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用...
  • def shellSort(arr): n=len(arr) gap=int(n/2) while gap>0: for i in range(gap,n): key=arr[i] j=i while j>=gap and arr[j-gap]>key: arr[j]=arr[j-gap] j-=gap arr[j]=key gap//=2

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,254
精华内容 4,901
关键字:

python实现排序

python 订阅