美文网首页
数据结构学习 | 排序

数据结构学习 | 排序

作者: 沿哲 | 来源:发表于2020-09-17 08:08 被阅读0次

选择排序

  • 概述:给定一组需要排序的数,第一次遍历寻找数中的max/min并记录,第二遍遍历寻找剩下数中的max/min再记录……以此循环
  • 时间复杂度O(n^2)[详见代码]
  • 代码解释
def findsmallest(arr):
    smallest=arr[0]
    smallest_index=0  ###重要
    for i in range(len(arr)):
        if arr[i]<smallest:
            smallest=arr[i]
            smallest_index=i
            
    return smallest_index
        


def selectionsort(arr):
    new=[]
    for i in range(len(arr)):
        smallest=findsmallest(arr)
        new.append(arr.pop(smallest)) #pop内传递的是index
    return new

快速排序

  • 概述:递归思想,每次选出一组数中的某一个数为pivot(中心点),遍历这组数找出比pivot小的数放一组less,另一组greater是比pivot大的数;再将less和greater进行上述操作(递归)
  • 时间复杂度
  1. 平均:O(nlogn)
  2. 最坏:O(n^2)
    待排序的序列为正序或者逆序,选出的pivot刚好是序列的max/min
  3. 最好:O(nlogn)
    选出的pivot正好是待排序的序列的中间值
  • 代码
def quicksort(arr):
    if len(arr)<2:
        return arr
    else:
        pivot=arr[0]
        less=[i for i in arr[1:] if i<=pivot]
        greater=[i for i in arr[1:] if i>pivot]
    return quicksort(less)+[pivot]+quicksort(greater)

冒泡排序

  • 概述:给定一个需要排序的序列,比较相邻的两个元素,较小的放前,较大的放后。(第一趟比较完成后最大的数在序列的最后面)
  • 时间复杂度:O(n^2)
  • 代码
def bubble_sort(nums):
    for i in range(len(nums)-1):  # 这个循环负责设置冒泡排序进行的次数,最后一次不需要
        for j in range(len(nums) - i - 1):  # j为列表下标
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
    return nums

相关文章

  • 数据结构和算法

    一。基本数据结构,排序算法,算法学习工具 基本数据结构,排序算法,算法学习工具(温馨提示:部分介绍需自备梯子) 二...

  • 音视频开发之旅(25) 算法系列-堆排序

    目录 基本数据结构 堆排序 资料 收获 前面我们学习实践了冒泡排序和快速排序,这篇我们继续学习另外一种排序算法:堆...

  • 算法与数据结构路线图

    学习算法与数据结构,深刻理解计算机科学 排序算法:插入、冒泡、选择、希尔、快速、归并、堆排序、计数排序、桶排序、基...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 2019-02-23 普林斯顿大学 数据结构课程笔记

    一、 数据结构:基本数据结构:栈、队列、背包、优先队列 排序:排序、归并排序、堆排序、基数排序 查找:二叉查找树、...

  • 常用排序算法总结

    常用排序算法 排序算法非常的多,在学习数据结构和算法时肯定都会学习到关于排序的算法,虽然现在高级语言都自带内置的排...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • 数据结构与算法学习笔记之 适合大规模的数据排序

    数据结构与算法学习笔记之 适合大规模的数据排序 前言 在数据排序的算法中,不同数据规模应当使用合适的排序算法才能达...

  • 算法与数据结构(六):堆排序

    title: 算法与数据结构(六):堆排序tags: [算法与数据结构, C语言, 堆排序]date: 2019-...

  • 数据结构与算法——字符串排序

    数据结构与算法——字符串排序 对于许多排序应用,决定顺序的键都是字符串。下面将学习专门针对字符串类型的排序方法,这...

网友评论

      本文标题:数据结构学习 | 排序

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