python不断地拆分数组

2024-10-03 21:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

import random
i=1
a=[]
while(i<=10000):
    b=random.randint(0,9999)
    a.append(b)
    i=i+1
print(a)

def kgsorting(a):
    k=1
    sum=a[0]
    while(k<=(len(a)-1)):
        sum=sum+a[k]
        k=k+1
    avg=sum/len(a)
    return avg

#print(kgsorting(a))

def splitlist(a):
    i=0
    b=[]
    c=[]
    avg=kgsorting(a)
    while(i<=(len(a)-1)):
        if(a[i]>=avg):
            b.append(a[i])
        else:
            c.append(a[i])
        i=i+1
    return c,b


(c,b)=splitlist(a)
#print(f+g)
#g=int(input())

i=1
while(i<=1):
    (f,g)=splitlist(c)
    (h,y)=splitlist(b)
    i=i+1
flen=len(f)
glen=len(g)
hlen=len(h)
ylen=len(y)      

i=1
while(i<=flen):
    k=0
    while(k<=(flen-2)):
        if (f[k+1]<f[k]):
            temp=f[k+1]
            f[k+1]=f[k]
            f[k]=temp
        k=k+1
    i=i+1
#print(b)


i=1
while(i<=glen):
    k=0
    while(k<=(glen-2)):
        if (g[k+1]<g[k]):
            temp=g[k+1]
            g[k+1]=g[k]
            g[k]=temp
        k=k+1
    i=i+1
#print(c)
#print((c+b))


i=1
while(i<=hlen):
    k=0
    while(k<=(hlen-2)):
        if (h[k+1]<h[k]):
            temp=h[k+1]
            h[k+1]=h[k]
            h[k]=temp
        k=k+1
#print(b)


i=1
while(i<=ylen):
    k=0
    while(k<=(ylen-2)):
        if (y[k+1]<y[k]):
            temp=y[k+1]
            y[k+1]=y[k]
            y[k]=temp
        k=k+1
    i=i+1
#print(c)
print((f+g+h+y))

wer=int(input())

嗨!我试图用python3编写一个排序代码,基本上我想把一个数组,比如说1000个随机整数,拆分成不相等的零件。零件条件是列表中的项低于或高于所有项的平均值数字。然后呢我用了4次气泡排序法来排序这两个列表。这个排序似乎比bubblesort快,我想为它拆分例如在2,4,8,16,32,64…n没有做的事情我做的代码为4裂开了。很明显分裂的次数越多,分裂的速度就越快,所以我想要n次分裂。我还没有找到一种递归的方法,也没有通过循环或做点什么。做点什么你知道怎么做吗? 谢谢 编辑:程序首先,从随机整数中列出一个列表,然后计算平均值,然后将列表a拆分为c,b列表,然后将c拆分为f,g,b拆分为h,y列表。最后我有4个列表,我对每个列表使用了4次气泡排序来对它们进行排序,并在最后合并了4个列表。有人知道如何将n个分隔符列为一个列表吗?你知道吗


Tags: 列表lenif排序tempavgsumprint
1条回答
网友
1楼 · 发布于 2024-10-03 21:34:52

执行n要列出的拆分量A的递归循环需要为每次拆分列表创建2个列表。为此,将创建一个方法,该方法接收一个列表并将其拆分为两部分,然后为这些部分再次调用它。你知道吗

另一种方法是简单地将列表分成n个部分,但这也只有在有n个列表的情况下才有效 Python: fastest way to create a list of n lists演示如何使用

d = [[] for x in xrange(n)]

虽然这会创建一个列表列表,但是可以通过一些工作来完成

然后做一个递归循环

def recursiveLoop(list, n):
    d = [[] for x in xrange(n)]
    index = 0
    while(index < len(list)/2): #splits the list
        d.append(list[index])
        index++
    recursiveLoop(d, n/2)

我将检查以确保^^工作,因为目前我认为它不工作,但想法是存在的,只需拆分列表并调用相同的函数再次拆分它。你知道吗

相关问题 更多 >