Python三种排序算法

冒泡排序:

def bubble_sort(lists):
    # 冒泡排序
    count = len(lists)
    for i in range(0, count):
        for j in range(i + 1, count):
            if lists[i] > lists[j]:                #判断后值是否比前置大,如果大就将其交换
                lists[i], lists[j] = lists[j], lists[i]
    return lists

res=bubble_sort([1,209,31,4,555,6,765,9,5,4,7,89,6,5,34,3,57,96])
print(res)

快速排序:

def quick_sort(lists, left, right):
    # 快速排序
    if left >= right:
        return lists
    key = lists[left]
    low = left
    high = right
    while left < right:
        while left < right and lists[right] >= key:
            right -= 1
        lists[left] = lists[right]
        while left < right and lists[left] <= key:
            left += 1
        lists[right] = lists[left]
    lists[right] = key
    quick_sort(lists, low, left - 1)
    quick_sort(lists, left + 1, high)
    return lists

选择排序:

def select_sort(lists):
    # 选择排序
    count = len(lists)
    for i in range(0, count):
        min = i
        for j in range(i + 1, count):
            if lists[min] > lists[j]:
                min = j
        print("--------",lists[min], lists[i])
        lists[min], lists[i] = lists[i], lists[min]
        print(lists[min], lists[i])
    return lists

res=select_sort([1,209,31,4,555,6,765,9,5,4,7,89,6,5,34,3,57,96])
print(res)
时间: 2024-08-25 11:02:57

Python三种排序算法的相关文章

python几种排序算法和二分查找方法的实现

一.算法概念 - 含义:算法就是对问题进行处理且求解的一种实现思路或者思想. 评判程序优劣的方法 - 消耗计算机资源和执行效率(无法直观) 计算算法执行的耗时(不推荐,因为会受机器和执行环境的影响) 时间复杂度(推荐) 时间复杂度 - 评判规则:量化算法执行的操作/执行步骤的数量, - 如下列 def sumOfN(n): # 执行一步: theSum = 0 for i in range(1,n+1): # 下式一共执行n步,for循环不算一步,因为它是控制循环次数的 theSum = the

三种排序算法(归并排序、快速排序,堆排序)

归并排序:建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段间有序.若将两个有序表合并成一个有序表,称为二路归并. 归并排序算法稳定,数组需要O(n)的额外空间,链表需要O(log(n))的额外空间,时间复杂度为O(nlog(n)),算法不是自适应的,不需要对数据的随机读取. 工作原理: 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后

三种排序算法小结

首先是归并排序,基本思想为分治,合并的技巧比较重要,不是原址排序. 代码如下; int merge(int* x,int left,int mid,int right) { int i,j,k; int L1 = mid-left+2; int L2 = right-mid+1; int* L = new int[L1]; int* R = new int[L2]; memcpy(L,x+left,sizeof(int)*L1); memcpy(R,x+mid+1,sizeof(int)*L2)

java中数组的三种排序算法

Java中的数组主要有三种排序算法,分别是冒泡排序算法.选择排序算法和插入排序算法. 冒泡排序算法 从数组中首元素开始和其他元素逐个比较,若其中一个元素比其小(或大),就交换首元素与其位置. 选择排序算法 插入排序算法 "我想你只是输在心软,不够卑鄙." 原文地址:https://www.cnblogs.com/yanggb/p/12105421.html

常用的三种排序算法

#快速排序 def QuickSort(arr,left,right): """ arr: the array needed to sort left: the start index right: the end index """ if(left>=right): return ; base = arr[left]; i = left; j = right; while(i<j and arr[j]>=base): j =

JavaScript新手学习笔记3——三种排序方式(冒泡排序、插入排序、快速排序)

每种编程语言学到数组的时候,都会讲到排序算法,当时学C语言的时候,卡在排序算法.今天来总结一下javascript中如何实现三种排序算法. 1.冒泡排序(默认升序排列哦) 原理: 冒泡排序的原理,顾名思义,就是小数往上冒,大数往下沉.从第一个数开始,如果比第二个数大就交换位置,然后跟第三个数字进行比较大小,交换位置等. 举例一下,有数组[2,4,3,5,1] 第一次循环:2<4  不交换:4>3 交换:4<5不交换:5>1交换,故结果是[2,3,4,1,5]; 第二次循环:2<

三种排序方法用java实现

用三种方法实现几个数的排序:冒泡排序,选择排序,调用Java里的库函数 1. 冒泡排序:顾名思义,就是将小的数一步一步往上冒,大的数一个个往下沉,下面是自己写的对冒泡排序的理解,字丑将就看一下吧. 2.选择排序:以从小到大为例,定义一个变量min_inter,用于记录最小值的下标,找到最小的数放在第0位,第二小放在第1位,后面依次. 3.直接调用:Arrays.sort(num3):需要导入import java.util.Arrays: 下面是代码: 1 import java.util.Ar

几种排序算法的学习,利用Python和C实现

之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算时通常是反复调用同一个方法,递归n次,就需要n个空间. 2.时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n).一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)

Python实现各种排序算法的代码示例总结

Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示例总结,其实Python是非常好的算法入门学习时的配套高级语言,需要的朋友可以参考下 在Python实践中,我们往往遇到排序问题,比如在对搜索结果打分的排序(没有排序就没有Google等搜索引擎的存在),当然,这样的例子数不胜数.<数据结构>也会花大量篇幅讲解排序.之前一段时间,由于需要,我复习了