计数排序

#coding=utf-8
import math
import random
def swap(A,i,j):
    r=A[i]
    A[i]=A[j]
    A[j]=r
def getRandomList(n):
    i=0
    lists=[]
    
    while i<n:
        lists.append(random.randint(1,5))
        i+=1
    return lists


def x(num):
    lists=[]
    for i in range(num):
        lists.append([])
    return lists


def countSort(A,B,k):
    C=[]
    for i in list(range(k)):
        C.append(0)
        
    for j in list(range(len(A))):
        C[A[j]]=C[A[j]]+1
    print(C)
    print(k)
    for i in list(range(k)):
        if i==0:
            pass
        else:
            C[i]=C[i]+C[i-1]
            
    a=list(range(len(A)))
    a.reverse()
    print(C)
    print("A",A)
    for j in a:
        B[C[A[j]]]=A[j]
        C[A[j]]=C[A[j]]-1


A=getRandomList(10)
#A=[1,2,3,4,7,8,9,10,14,16]
random.shuffle(A)
print(A)


B=x(len(A)+1)


countSort(A,B,max(A)+1)


print(B)  #排序的结果排到了B里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值