首页 > 其他分享 >计数排序

计数排序

时间:2022-11-13 15:11:35浏览次数:44  
标签:count val max random li 计数 排序

1, 速度很快, 唯一缺陷是计数长度列表和排序的最大数字相等, 如果排序中的数字实在太大了, 创建的列表太长了比如2的32次方

import random

def count_sort(li, max_count =21):
    count = [0 for _ in range(max_count+1)]
    for val in li:
        count[val] += 1
    li.clear()
    for ind, val in enumerate(count):
        for i in range(val):
            li.append(ind)
li = [random.randint(0,20) for _ in range(8)]
random.shuffle(li)
print('排序前',li)
count_sort(li)
print('排序后',li)

2, 稍稍的改进,减少计数列表的的长度, 如果最小数实在太小, 无法减少

import random

def count_sort(li):
    min ,max_count = li[0],li[0]
    for i in li:
        if i > max_count:
            max_count = i
        if i < min:
            min = i
    count = [0 for _ in range(max_count+1-min)]
    for val in li:
        count[val-min] += 1
    li.clear()
    for ind, val in enumerate(count):
        for i in range(val):
            li.append(ind+min)
li = [random.randint(10,20) for _ in range(8)]
random.shuffle(li)
print('排序前',li)
count_sort(li)
print('排序后',li)

标签:count,val,max,random,li,计数,排序
From: https://www.cnblogs.com/heris/p/16885997.html

相关文章

  • 自定义字符串排序
    题目给定两个字符串order和s。order的所有单词都是唯一的,并且以前按照一些自定义的顺序排序。对s的字符进行置换,使其与排序的 order 相匹配。更具体地说,如果......
  • 791. 自定义字符串排序
    791.自定义字符串排序给定两个字符串order和s。order的所有单词都是唯一的,并且以前按照一些自定义的顺序排序。对s的字符进行置换,使其与排序的 order 相匹配......
  • 791. 自定义字符串排序 ----- 自定义sort、权值排序、计数排序
    给定两个字符串order和s。order的所有单词都是唯一的,并且以前按照一些自定义的顺序排序。对s的字符进行置换,使其与排序的 order 相匹配。更具体地说,如果在 or......
  • Java:自定义排序与sort()函数
    自定义排序与Arrays.sort()本篇题目来源:2022/11/13Leetcode每日一题:https://leetcode.cn/problems/custom-sort-string给定两个字符串order和s。order的所有单词都......
  • 排序专题
    快速排序#include<bits/stdc++.h>usingnamespacestd;inta[5]={5,1,2,4,3};intpartition(intbegin,intend){intpivot=begin-1;for(inti......
  • 堆排序用法
    因为堆结构只保证根节点比双子节点都大或小1  求最小的n个数:   构建n个数的大顶堆,依次弹出堆顶再往下调整(用例省略)2  求最大的n个数:   构建n个数的......
  • 快速排序需要注意的问题
    1  左右哨兵等于pivot的情况要接着走,不然有可能一直不动,无限循环2  需要先走右指针再走左指针,因为pivot在最左侧,最终停留点应该比pivot小,这样交换后小的在前; ......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百六十四题-快速排序
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • 排序函数的算法(day12)
    今天尝试了三种数字的排序法。目的为1)熟悉数组的操作2)熟悉循环笔者是做嵌入式的,不想再算法上做过多探究,自身水平和专业也不允许深入太多。现在直接给出三种排序函数。1.插值......
  • 计数整理
    计数本篇侧重于生成函数方向的计数,不过知识点上是由易到难的(大概一些基础科技内容不会详细提及组合数计数里面最基本的部分1.定义排列:从\(n\)个物品中选出\(m\)个......