Commit 42ae47b0 by BellCodeEditor

auto save

parent ecc99bdc
arr = [ 12, 11, 13, 5, 6, 7, 8]
def hs(list):
n=len(list)
for i in range(n,-1,-1):
h(list,n,i)
for i in range(n-1,0,-1):
list[0],list[i]=list[i],list[0]
h(list,i,0)
def h(list,n,i):
largest=i
l = 2*i+1
r = 2*2+2
if l<n and list[i]<list[l]:
largest=l
if r<n and list[largest]<list[r]:
largest=r
if largest != i:
list[i],list[largest]=list[largest],list[i]
h(list,n,largest)
hs(arr)
print(arr)
\ No newline at end of file
for x in range(34):
for y in range(51):
z=100-x-y
if 3*x+2*y+z/3==100:
print(x,y,z)
\ No newline at end of file
list=[6,2,4,8,10,1,9,3,7,0,5]
for i in range(1,len(list)):
key = list[i]
j = i-1
while key < list[j] and j >= 0:
list[j+1] = list[j]
list[j] = key
j = j - 1
print(list,i)
print(list)
# newlist=[]
# newlist.append(list[0])
# for i in range(1,len(list)):
# for j in range(0,len(newlist)):
# if newlist[j] > list[i]:
# newlist.insert(j,list[i])
# break
# else:
# if newlist[-1]<list[i]:
# newlist.append(list[i])
# break
# lista = [1,3,9,12,32,41,45,62,75,77,82,95,100]
alist=[]
for i in range(1,101):
alist.append(i)
print(alist)
low = 0
high = len(alist)-1
num = int(input("请输入一个1-100的数值:"))
n=0
while low <= high:
mid = low+(high-low)*(num-alist[low])//(alist[high]-alist[low])
n += 1
guess=alist[mid]
if guess==num:
print("找到目标了,索引是:",mid)
break
elif guess<num:
low = mid + 1
else:
high = mid -1
print(n)
\ No newline at end of file
def f(n):
if n==1:
return 1
else:
return f(n-1)+n
print(f(5))
\ No newline at end of file
arr = [ 12, 11, 13, 5, 6, 7, 8]
def hs(arr):
n=len(arr)
# 去做大根堆
for i in range(n,-1,-1):
h(arr,n,i)
# 堆顶交换值
for i in range(n-1,0,-1):
arr[i],arr[0]=arr[0],arr[i]
h(arr,i,0)
def h(arr,n,i):
largest=i
l=2*i+1
r=2*i+2
if l<n and arr[i]<arr[l]:
largest=l
if r<n and arr[largest]<arr[r]:
largest=r
if largest != i:
arr[i],arr[largest]=arr[largest],arr[i]
h(arr,n,largest)
hs(arr)
print(arr)
\ No newline at end of file
#大根堆的建立方函数
def sift(li,low,high): #li是指列表,low是指根节点位置,high是指最后一个元素位置
i=low #最开始跟节点的位置
j=2*i+1 #左边下一层孩子节点
tmp=li[low] #把堆顶元素存下来
while j<=high: #只要j位置有节点,有数字便可以一直循环
if j+1<=high and li[j+1]>li[j]: #右边孩子有并且右边更大
j=j+1 #把j指向j+1,右边孩子大于左边,指向右边
if li[j]>tmp:
li[i]=li[j]
i=j #往下看一层
j=2*j+1
else: #tmp更大的情况,把tmp放上来
li[i]=tmp #把tmp放到某一级领导的位置上
break
else:
li[i]=tmp #把tmp放在叶子节点上去
#堆排序的算法实现
def heap_sort(li):
'''构造堆'''
n=len(li)
for i in range((n-2)//2,-1,-1):
sift(li,i,n-1)
#以上表示大根堆构造完成
#挨个吐出数字
for i in range(n-1,-1,-1): #i是指当前堆的最后一个元素
li[0],li[i]=li[i],li[0]
sift(li,0,i-1) #i-1是新的堆的high
#以上表示吐出来数字的过程
import random
arr = [ 12, 11, 13, 5, 6, 7, 8]
heap_sort(arr)
print(arr)
import numpy
a = [[1,2],[4,6],[7,9]]
print(a)
x = numpy.array(a)
print(x)
print(x.ndim)
print(x.shape)
\ No newline at end of file
li=[3,8,2,4,0,9,6,1,7,5]
def sort(list):
if len(list)<=1:
return list
mid=list[1]
left=[]
right=[]
for i in list:
if i<mid:
left.append(i)
elif i>mid:
right.append(i)
print(left)
print(mid)
print(right)
return sort(left)+[mid]+sort(right)
print(sort(li))
\ No newline at end of file
array = [2,3,5,7,1,4,6,15,5,2,7,9,10,15,9,17,12]
def list(data):
if len(data)>=2:
mid = len(data)//2
guess = data[mid]
left=[] #left,right = [],[]
right=[]
data.remove(guess)
for num in data:
if num >= guess:
right.append(num)
else:
left.append(num)
print("left:",left)
print('guess:',[guess])
print("right:",right)
return list(left) + [guess] + list(right)
else:
return data
print(list(array))
list=[6,2,4,8,10,1,9,3,7,0,5]
print(list)
\ No newline at end of file
list=[16,25,39,27,12,8,45,63]
n=len(list)
gap=n//2
k=0
while gap>0:
for i in range(gap,n):
key = list[i]
j = i-gap
while key < list[j] and j>=0:
list[j+gap]=list[j]
list[j]=key
j = j-gap
gap=gap//2
k=k+1
print(list,k)
print(list)
# newlist=[]
# newlist.append(list[0])
# for i in range(1,len(list)):
# for j in range(len(newlist)):
# if newlist[j] > list[i]:
# newlist.insert(j,list[i])
# break
# else:
# if newlist[-1]<list[i]:
# newlist.append(list[i])
# print(newlist)
\ No newline at end of file
from random import * # 导入随机模块
list=[randint(0,999) for i in range(100)] # 随机生成100个(0-999)的整数存放在list列表中
print(list)
n=10 # 设定桶的数量
buckets = [[] for i in range(n)] # 创建对应的桶
print(buckets)
for var in list: # 对列表进行遍历
i = min(var//100,n-1) # 设定分桶的条件 这里是0-99/100-199/200-299...
buckets[i].append(var) # 将遍历的值添加到对应的桶中
print(buckets)
for k in range(len(buckets)): # 创建索引对buckets列表进行遍历 k为索引 buckets[k]就可以表示对应的小列表
# 使用**排序法对桶buckets[k]进行排序(下方是冒泡排序))
for i in range(len(buckets[k])-1):
for j in range(len(buckets[k])-1-i):
if buckets[k][j] > buckets[k][j+1]:
buckets[k][j],buckets[k][j+1] = buckets[k][j+1],buckets[k][j]
print(buckets)
list.clear() # 清空原列表
for i in buckets: # 对buckets桶列表进行遍历
list.extend(i) # 将已排好的桶中列表进行拼接
print(list) # 显示排序后的列表
# 导入随机模块
# 随机生成100个(0-999)的整数存放在list列表中
# 设定桶的数量
# 创建对应的桶
# 对列表进行遍历
# 设定分桶的条件 这里是0-99/100-199/200-299...
# 将遍历的值添加到对应的桶中
# 创建索引对buckets列表进行遍历 k为索引 buckets[k]就可以表示对应的小列表
# 使用**排序法对桶buckets[k]进行排序
# 清空原列表
# 对buckets桶列表进行遍历
# 将已排好的桶中列表进行拼接
# 显示排序后的列表
# 下边用的是冒泡排序,把每一个buckets中的小列表做好排序
# for i in range(1,len(buckets[k])-1):
# for j in range(len(buckets[k])-i):
# if buckets[k][j] > buckets[k][j+1]:
# buckets[k][j],buckets[k][j+1] = buckets[k][j+1],buckets[k][j]
# 下边用的是插入排序,把每一个buckets中的小列表做好排序
# for i in range(1,len(buckets[k])):
# key = buckets[k][i]
# j = i-1
# while key < buckets[k][j] and j >= 0:
# buckets[k][j+1] = buckets[k][j]
# buckets[k][j] = key
# j = j - 1
# 下边用的是选择排序,把每一个buckets中的小列表做好排序
# for i in range(len(buckets[k])-1):
# index=i
# for j in range(i+1,len(buckets[k])):
# if buckets[k][index]>buckets[k][j]:
# index=j
# buckets[k][i],buckets[k][index]=buckets[k][index],buckets[k][i]
from random import *
alist=[]
newlist=[]
sum=0
for i in range(80):
alist.append(randint(1,10))
print(alist)
print()
for i in range(len(alist)):
if alist[i]==6:
sum += 1
newlist.append(i)
print("找到了",sum,"个6")
print(newlist)
\ No newline at end of file
array=[2,3,5,7,1,4,6,15,5,2,7,9,10,15,9,17,12]
def f(data):
if len(data)>=2:
mid=int(len(data)/2) #len(data)//2
guess=data[mid]
right=[]
left=[]
data.remove(guess)
for num in data:
if num>=guess:
right.append(num)
else:
left.append(num)
print("left:",left)
print("中间值,基准值:",guess)
print("right:",right)
return f(left) + [guess] + f(right)
else:
return data
print(f(array))
\ No newline at end of file
list=[16,25,39,27,12,8,45,63]
n=len(list)
gap=int(n/2) # gap=n//2
k=1
while gap > 0:
for i in range(gap,n):
key = list[i]
j = i-gap
while key<list[j] and j >= 0 :
list[j+gap] = list[j]
list[j] = key
j = j - gap
gap = gap//2
print(list,k)
k +=1
print(list)
\ No newline at end of file
n = int(input("请输入一个正整数:"))
sum = 0
for a in range(n):
for b in range(a):
for c in range(b):
for d in range(c):
aaa = a*a*a
bbb = pow(b,3)
ccc = pow(c,3)
ddd = pow(d,3)
if aaa==bbb+ccc+ddd:
print("完美立方数是:",a,b,c,d)
sum += 1
print("完美立方数总共有:",sum,"个")
\ No newline at end of file
import numpy as np
a = np.array([[3,7,5,1,4],
[7,3,2,4,1]])
print(a.cumsum(axis=1))
import sys
import sys
func = sys.path.append("C:\\Users\\bell\\Desktop\\func.py")
import func
list=[50, 24, 4, 7, 49, 42, 6, 29, 17, 10]
n = 5 # 定义桶的数量为n,这里我们定义5桶
buckets = [[] for i in range(n)] # 创建n个空桶,这里整体是一个列表,每个桶是一个列表,所以是个二维列表
print(buckets)
for var in list: # 对列表中的内容进行遍历
i = min(var // 10, n-1) # i 表示var放进几号桶
buckets[i].append(var) # 将var放入对应第i个桶中
print(buckets)
list = []
#对每一个桶进行升序排序
for item in buckets:
# #冒泡
# n = len(item)
# for i in range(n-1):
# for j in range(n-i-1):
# if item[j] > item[j+1]:
# item[j],item[j+1] = item[j+1],item[j]
#list.extend(item)#list+=item
list+=func.quick_sort(item)
print(list)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment