【发布时间】:2016-02-20 13:50:04
【问题描述】:
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())
嗨!我正在尝试在python 3中编写一个排序代码。基本上我想将一个由1000个随机整数组成的数组拆分为不相等的部分。条件是列表的项目是否低于或高于所有数字的平均值。然后我使用冒泡排序 4 次对两个列表进行排序。这种排序似乎比冒泡排序更快,我想拆分例如 2,4,8,16,32,64...n 而不做我所做的事情4个拆分的代码。显然,拆分越多越快,所以我想要n个拆分。我还没有找到一种方法来递归地或通过循环或其他方式来做到这一点。你知道该怎么做吗? 谢谢 编辑:一开始的程序从随机整数创建一个列表,然后计算平均值,然后将列表 a 拆分为 c、b 列表,然后将 c 拆分为 f、g 和 b 到 h、y 列表。最后我有 4 个列表我对每个列表使用了 4 次冒泡排序来对它们进行排序,最后我合并了 4 个列表。有谁知道如何进行 n 拆分以列出 a?
【问题讨论】:
-
用输入和期望的结果来构建您的问题可能更容易,而不是引导我们完成您的方法(通过评论代码来做到这一点......)。您的 while 循环复制/粘贴可能是您应用的功能,然后我们可以进一步完善它,但我不确定我是否理解您最终想要得到的东西,这使得很难建议正确的方法,而不仅仅是语法正确的代码。