美文网首页
常用排序

常用排序

作者: warManHy | 来源:发表于2020-12-30 17:42 被阅读0次
  1. 冒泡
def pp(list):
    n = len(list)
    for i in range(n):
        for j in range(n-i-1):
            if list[j] > list[j+1]:
                list[j], list[j+1] = list[j+1],list[j]
  1. 快排
def sort(arr):
    if len(arr) < 2:
        return arr
    flag = arr[0]
    big = [x for x in arr if x > flag]
    same = [x for x in arr if x == flag]
    small = [x for x in arr if x < flag]
    return sort(big) + same + sort(small)
  1. 插入
def insertSort(list):
    n = len(list)
    for i in range(n):
        tmp = list[i]
        j = i - 1
        print "out", list, j, tmp
        while j >= 0 and list[j] > tmp:
            # print list
            list[j+1] = list[j] #换值
            print list,j
            # list[j],list[j+1] = list[j+1], list[j]
            j = j - 1
        arr[j+1] = tmp #换值
        print "fin", list,tmp
  1. 选择
def selectSort(arr):
    n = len(arr)
    for i in range(n):
        tmp = i
        for j in range(i+1, n):
            if arr[j] < arr[tmp]:
                tmp = j
        arr[i], arr[tmp] = arr[tmp], arr[i] 
  1. 归并(分治)
    随机找个数,分比他的大,小的;分到单个数;在合并(merge函数是重点)
def merge_sort(alist):
    """
    递归分治序列
    :param alist:
    :return:
    """
    if len(alist) <= 1:
        return alist
    num = len(alist)//2
    left = merge_sort(alist[:num])
    right = merge_sort(alist[num:])
    return merge(left, right)  # 合并
 
def merge(left, right):
    """
    合并操作
    :param left:
    :param right:
    :return:
    """
 
    l, r = 0, 0
    result = []
    while l < len(left) and r < len(right):
        if left[l] < right[r]:  # 筛选排序将left与right最小元素按序加入新序列
            result.append(left[l])
            l += 1
        else:
            result.append(right[r])
            r += 1
    result += left[l:]
    result += right[r:]
    return result
  1. 拓扑 (图,之前存在依赖关系)
    有向无环图,利用bfs|dfs进行处理,删除入度为0,查他周围,选择入度为0,处理。


    image.png

相关文章

  • 常用的排序算法

    常用的排序算法 常用的排序算法插入排序折半插入排序shell 排序冒泡排序选择排序快速排序基数排序归并排序堆排序K...

  • python 排序算法

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

  • Java语言——数组排序算法

    数组有很多常用的算法,包括冒泡排序、直接选择排序和反转排序。 一、冒泡排序 冒泡排序是最常用的数组排序算法之一,它...

  • 算法04-棋牌游戏常用排序算法

    算法04-棋牌游戏常用排序算法 一、介绍 棋牌游戏常用排序算法包括:链式基数排序、插入排序、希尔排序。 二、链式基...

  • 常用算法

    常用排序算法

  • 常见排序算法

    常用排序算法

  • 2019-08-11

    Javascript中常用几种基础算法 1 排序-冒泡排序 //冒泡排序 function bubbleSort...

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

  • 排序算法

    概述 常用排序算法 冒泡排序 插入排序 选择排序 归并排序 快速排序 冒泡排序 步骤 比较相邻元素,如果前面元素比...

  • 八种基本排序算法的使用

    最经典最常用的排序算法有:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序和桶排序。这些排序算...

网友评论

      本文标题:常用排序

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