2022-06-30

2022-06-30  本文已影响0人  木马音响积木



la=[]

for i in  range(1,10):
    for j in range(1,6):
        print(str(i*j).center(6),end='')
        la.append(i*j)
    print()


la.sort()
print(la)

def gui(la):
    def he(la, a, b, c, d):
        t, m= [],a
        while a < b and c < d:
            if la[a] <= la[c]:
                t.append(la[a])
                a += 1
            else:
                t.append(la[c])
                c += 1
        la[m:d] = t+la[a:b]+la[c:d]
    #start
    n, step = len(la), 1
    while step < n:
        i = f = 0
        while i < n:
            start, stop = i, i + step
            if stop > n:
                stop = n
            if f:
                he(la, a, b, start, stop)
                f = 0
            else:
                f, a, b = 1, start, stop
            i += step

        step += step

x = [11, 3, 2, 6, 4, 5, 8, 7, 9]
gui(x)
print(x)








'''from random  import randint




la=[1,2,3,4]
import itertools

for a,b in itertools.pairwise(la):
    print(a,b)

i=0
he=0
while he<=1234567:
    i+=1
    he+=i
print(i,he)

la=(i for i in range(1234567))
print(type(la))
for i,j in enumerate(itertools.accumulate(la)):
    if j>1234567:
        print(j,i)
        break

print(1571*1572/2)

e=10000
a=1
def cc(a):
    return a*(a+1)//2
x=0
while a<e:
    m=a+e >>1
    x+=1
    print(x,m)
    if cc(m)<=1234567:
        a=m+1
    else:
        e=m 
print(e,a)

print(1571/13)



'''


# 敢去华为 面试,你小子还有点胆量
# 我说一下我的思路
'''
1,第一是特判断 , 长度不够3,杀;
       正好 3   ,和 判断后,输出

2,从大到小排序

3,检查  ,如果钱三强 加起来 小于等于100  ,答案得到
          如果后三名,加起来 ,大于100,,返回 输入数据错误

4,说明能找到值 
   先定义 big 就是最后的返回值,答案

last = la[-1] +la[-2]  #备用,后期优化用,
r=right=size-1

5,第一层 遍历, 下标,从 0 到 size -2(不可用边界)
   for i in range(size -2):


       6,这里面要在用双指针之前,先 进行特判 

          如果  a, first3 = la[i] +la[i+1] +la[i+2] ==100:return 100
                b, first3 < 100:
                       以i 开始的,最大已经找到了,i 可以不用循环了,
                       因为,再后面的无论怎么选,都不会大于first3 ,,返回 它和big 中大的那个

                c, 此时 first3 >100:

                    hou = la[i] + la[-2] +la[-1]
                    1)  if hou >100:  这个i  是 废了 ,  continue 

                    2) if hou ==100 : return 100 
                    3)  没法投机了
                        干 , 两边夹逼
                        left =i+1 
                        r=right
                        代码略

class Solution:

    def gan(self,la):
        size=len(la)
        if size<=2:return '输入数据有误'

        if size==3:
            t=la[0]+la[1]+la[2] 
            if t>100:
                return '输入数据有误'
            else:
                return t 
        #2 排序啦
        la.sort(reverse =True)

        #备用 变量区
        last = la[-1] +la[-2]  
        r=right=size-1
        t = la[0]+la[1]+la[2] 
        if t<=100:return t 
        hou = la[-3] + la[-2] +la[-1]
        if hou >100:
            return '输入数据有误'  
        big =-float('inf')
        print('--------70--------')
        #5  遍历 i 
        for i in range(size-2 ):

            first3 = la[i] +la[i+1] +la[i+2]
            if first3 ==100:
                print(75,'行', la[i] ,la[i+1] ,la[i+2])
                return 100

            if first3<100:
                #尝试刷新 big
                if first3 >big:
                    #此时不用找了,这是最后一个满足条件的,最后一个i ,big 就不更新了,
                    #print(96)
                    print('83行', la[i] ,la[i+1] ,la[i+2])
                    return first3
                else:
                    print(999999999999)
                    return big

            #此时 first3 >100:
            hou = la[i] + la[-2] +la[-1]
            #hou =la[i] +last
            #print(la[i] )
            if hou >100:
                continue
            elif hou ==100:
                print('93===',la[i] , la[-2] ,la[-1])
                return 100
            
            # 双指针夹逼 
            left = i+1
            r= right
            cha = 100-la[i]
            
            while left <r:
                #print(left,r,100)
                v = la[left] +la[r]

                if v ==cha:
                    print('107=====',la[left] ,la[r],la[i])
                    return 100
                elif v >cha:
                    left +=1
                else:
                    c=v+la[i]
                    if c>big:
                        big=c 
                        #print(120)
                        print('116===',la[left] ,la[r],la[i])
                    r-=1
            
        return big

cc=Solution()
#x=[i for i in range(90,2,-5)]
x=[]
for i in range(30):
    w= randint(-3000,2000)
    x.append(w)
x=[50,45,32,31,30,3,2,1]
#x.sort(reverse=True)
#print(x)
print(cc.gan(x))






for i in range(100000):
    cat = randint(1,7)
    zhua=0
    #print(cat)
    for a in (2,3,4,5,6,6,5,4,3,2):
        #print(cat,999)
        if a==cat:
            print(cat,'done')
            zhua=1
            break
        suiji =randint(0,1)
        if suiji==0:suiji=-1
        cat+=suiji

        if cat ==0:
            cat=2
        elif cat ==8:
            cat=6
    if zhua==0:
        print('cat is a ghost')




def  gan(args):
    if args==1:
        return 1
    return gan(args-1)*2 +2

print(gan(8))
    
print(gan(2))




la= [1, 2, 4, 7, 11, 6,8,9,34,45,56,67,78,79,99,12,13,14,23,24]
def swap(a,b):la[a],la[b]= la[b],la[a]

def pao(la):
    n=len(la)
    for i in range(n):
        for j in range(n-1-i):
            if la[j] >la[j+1]:
                swap(j,j+1)
pao(la)
print(la)
                


def select(la):
    n =len(la)
    for i in range(n-1):
        index =i
        for j in range(i+1,n):
            if la[j] <la[index]:
                index =j
        swap(i,index)
select(la)
print(la)


def insert(la):
    n=len(la)
    for i in range(1,n):
        j=i
        while j and la[j-1] > la[j]:
            swap(j, j-1)
            j-=1
insert(la)
print(la)



def gui(la,a,e):
    if a<e:
        m=a+e>>1
        gui(la,a,m)
        gui(la,m+1,e)
        he(la,a,m,e)

def he(la,a,m,e):
    k=0
    i=a
    j=m+1
    t=[0]*(e-a+1)

    while i<=m and j<=e:
        if la[i]<=la[j]:
            t[k]=la[i]
            k+=1
            i+=1
        else:
            t[k]=la[j]
            k+=1
            j+=1
    if i<=m:
        t[k:]=la[i:m+1]
    if j<=e:
        t[k:]=la[j:e+1]
    la[a:e+1]=t
gui(la,0,len(la)-1)
print(la)



def dui(la):
    def adj(la,pos,r):
        er=pos+pos+1
        if er+1<r and la[er+1]>la[er]:
            er+=1
        if er<r and la[er] >la[pos]:
            swap(er,pos)
            adj(la,er,r)
    r=len(la)
    half=r//2
    for i in range(half,-1,-1):
        adj(la,i,r)
    for i in range(r-1,0,-1):
        swap(0,i)
        adj(la,0,i)
dui(la)
print(la)


def fast(la,a,e):
    if a<e:
        t=la[e]       
        slow=a
        for f in range(a,e):
            if la[f]<t:
                swap(slow,f)
                slow+=1
        swap(slow,e)
        fast(la,a,slow-1)
        fast(la,  slow+1,e)

fast(la,0,len(la)-1)
print(la)


def sort(a):
    left =0
    high = r= len(a) - 1

    def kk(a, left, high):
        if left < high:
            r = high
            p = a[r]
            zuo = left
            while left < high:
               while left < high and a[left] <= p:
                  left += 1

               while left < high and a[high] >= p:
                  high -= 1
               a[left], a[high] = a[high], a[left]
            a[left], a[r] = a[r], a[left]
            p = left
            kk(a, zuo, p - 1)
            kk(a, p + 1, r)

    kk(a, 0, high)


x = [11, 3, 2, 6, 4, 5, 8, 7, 9]
import random
for jj in range(10000):
   x=[]

   for  i in range(500):
      x.append(random.randint(50,1450))

   t=x[:]
   sort(x)
   w=sorted(t)
   if w !=x:
       print(x)
       print(w)


# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def inorderSuccessor(self, root: 'TreeNode', p: 'TreeNode') -> 'TreeNode':
        a=t=root
        st=[]
        if p.right:#需要返回右子树的最左节点
            a=p.right
            while a:
                w,a=a,a.left
            return w
        
        while t.val != p.val:
            st.append(t)
            if t.val<p.val:t=t.right
            else: t=t.left
        #if st==[]:return #说明是根节点,没有右子树
        #if not a.right:return
        while st:
            node =st.pop()
            if node.val>p.val:
                return node

        return 

'''

"""



w=len(la)
half,yu =divmod(w,2)


def suibian(la):
    low =a=0
    r=high=w-1

    while 1:
        '''
        p=la[r] 
        while a<r:
            while a<r and la[r]>=p:
                r-=1
            while a<r and la[a]<p:
                a+=1
            if a<r:
                la[a],la[r] = la[r],la[a]
                a+=1
                r-=1
        la[a],la[high] =la[high],la[a]'''
        if a<r:
            t=la[r]
            slow= a
            for i in range(a,r):
                if la[i]<t:
                    la[slow],la[i] =la[i],la[slow]
                    slow+=1
            la[slow],la[r]=la[r],la[slow]
        a=slow

        #check a 
        if a==half:
            break
        elif a>half:
            high= r = a-1
            a=low
        else:
            low = a = a+1
            r = high
    if yu:
        pass
    else:
        pass
print(la,999)

#sum(la[a+1:]) -sum(la[:a+1])

print(suibian(la))
la.sort()
print(half)
print(sum(la[11:]) -sum(la[:11]))
"""


'''
















la=[]
chaju=0
qian=hou=1
for i in range(1,100):
    qian = qian +chaju
    chaju+=1
    hou = qian + chaju
    chaju+=1
    t=[qian,hou]
    la.append(t)
    qian=hou
    if hou+chaju>=200:break
print(la)
c=[]
cha=0
p=1
for i in range(20):
    p=p+cha
    c.append(p)
    cha+=1
print(c)
la=[]
t=0
for i in range(0,20,2):
    la.append([c[i],c[i+1]])
    w=sum(la[-1])
    print(w-t)
    t=w
print(la)


def dui(la):
    def adj(la,pos,r):
        er=pos+pos+1
        if er+1<r and la[er+1]>la[er]:
            er+=1
        if er<r and la[er]>la[pos]:
            la[pos],la[er] = la[er],la[pos]
            adj(la,er,r)
    k=len(la)
    half=k//2 -1 
    for i in range(half,-1,-1):
        adj(la,i,k)
    for i in range(k-1 ,0,-1):
        la[0],la[i] = la[i],la[0]
        adj(la,0,i)

la=[3,2,1,6,5,4,9,8,7]
dui(la)
print(la)

'''




"""
def dsort(la):
    def adj(aa,pos,r):#大顶堆
        #print(1,la)
        er = pos+pos+1
        if er +1 <r and aa[er] < aa[er+1]: #向右看齐
            er +=1
        if er <r and aa[pos] < aa[er]:    #石头下山
            aa[pos],aa[er]=aa[er],aa[pos]
            adj(aa,er,r)

    k=len(la)
    half = k//2-1
    for i in range(half,-1,-1):
        adj(la,i,k)

    for i in range(k-1,-1,-1):
        la[0],la[i]=la[i],la[0]
        adj(la,0,i)

la=[3,2,1,6,5,4,9,8,7]
dsort(la)
print(la)
#---------------------------------------------
la=[3,2,1,6,5,4,9,8,7]
def paopao(la):
    k=len(la)
    for i in range(k-1):
        for j in range(k-1-i):
            if la[j] >la[j+1]:
                la[j],la[j+1]=la[j+1],la[j] 
paopao(la)
print(la)

la=[3,2,1,6,5,4,9,8,7]
def insert(la):
    k=len(la)
    for i in range(1,k):
        for j in range(i,0,-1):
            if la[j]<la[j-1]:
                la[j],la[j-1]=la[j-1],la[j]
            else:break
insert(la)
print(la)

la=[3,2,1,6,5,4,9,8,7]
def se(la):
    k=len(la)
    for i in range(k-1):
        index =i
        for j in range(i+1,k):
            if la[j]<la[index]:
                index=j 
        la[i],la[index]=la[index],la[i]
se(la)
print(la)

def ss(la,left,r):
    if left<r:
        t=la[r]
        slow=left
        for i in range(left,r):
            if la[i]<t:
                la[slow],la[i] =la[i],la[slow]
                slow+=1
        la[slow],la[r]=la[r],la[slow]
        ss(la,left,slow-1)
        ss(la,slow+1,r)

la=[3,2,1,6,5,4,9,8,7]
ss(la,0,8)
print(la)

def ss(la,left,r):
    if left<r:
        t=la[left]
        slow=left
        for i in range(left+1,r+1):
            if la[i]<t:
                slow+=1
                la[slow],la[i] =la[i],la[slow]

        la[slow],la[left]=la[left],la[slow]
        ss(la,left,slow-1)
        ss(la,slow+1,r)

la=[3,2,1,6,5,4,9,8,7]
ss(la,0,8)
print(la)

la=[3,2,1,6,5,4,9,8,7]
def m(la,a,r):
    if a<r:  #看好了,先分后和
        mid =a+r>>1
        m(la,a,mid)
        m(la,mid+1,r)

        mm(la,a,mid,r)

def mm(la,a,mid,r): #合并
    t=[0] *(r-a+1)
    i,k=a,0
    j=mid+1
    while i<=mid and j<=r:
        if la[i]<la[j]:
            t[k]=la[i]
            i+=1
        else:
            t[k]=la[j]
            j+=1
        k+=1
    while i<=mid:
        t[k]=la[i]
        k+=1
        i+=1
    while j<=r:
        t[k]=la[j]
        j+=1
        k+=1
    la[a:r+1]=t[:k]

m(la,0,8)
print(la)

"""
'''

计算机程序的构造与解释(Python) CS61A 
进阶
数据结构与算法 CS61B
分布式 MIT 6.824
MIT6.830(数据库)
MIT6.828(操作系统)
CS61c:计算机体系结构




                
1   eval 及其他内置函数    https://www.runoob.com/python/python-func-eval.html     
2   format 格式化字符串   https://www.w3school.com.cn/python/python_string_formatting.asp https://www.cnblogs.com/JackLi07/p/9832137.html 
3   字符串处理函数 https://www.w3school.com.cn/python/python_strings.asp       
4   异常处理,try except https://www.w3school.com.cn/python/python_try_except.asp        
5   列表 操作函数 https://www.w3school.com.cn/python/python_lists.asp     
6   字典 操作函数 https://www.w3school.com.cn/python/python_dictionaries.asp      
7   csv 格式读写            
8   文件打开和关闭,读写          
9   第三方库的安装 https://www.w3school.com.cn/python/python_pip.asp       
10  turtle 库            
11  random 库    https://www.cnblogs.com/cwp-bg/p/7468475.html       
12  pyinstaller 必考  http://c.biancheng.net/view/2690.html       '''






'''

def dsort(la):
    def adj(la,pos,r):
        er=pos+pos +1
        if er+1<r and la[er+1] > la[er]: #找高个,向右看齐
            er+=1
        if er<r and la[er] > la[pos]:
            la[er] ,la[pos]= la[pos], la[er] #上任,并告诉下属选人方法
            adj(la,er,r)

    k=len(la)
    half = k//2 -1
    for i in range(half,-1,-1):
        adj(la,i,k)

    for i in range(k-1,-1,-1):
        la[0],la[i] =la[i],la[0]
        adj(la,0,i)
la=[1,2,15,4,3,5,7,6,9,8,25,5,5,5]
dsort(la)
print(la)







def dui(la):
    def adj(la,pos,k):
        er=pos+pos+1
        if er+1<k and la[er+1]>la[er]:
            er+=1
        if er<k and la[er]>la[pos]:
            la[er],la[pos]=la[pos],la[er]
            adj(la,er,k)
    k=len(la)
    half=k//2-1
    for i in range(half,-1,-1):
        adj(la,i,k)
    for i in range(k-1,-1,-1):
        la[i],la[0]=la[0],la[i]
        adj(la,0,i)

la=[1,2,15,4,3,5,7,6,9,8,25,5,5,5]
dsort(la)
print(la)
















def guibing(la,left,r):
    if left <r:
        m=left+r>>1
        guibing(la,left,m)
        guibing(la,m+1,r)
        he(la,left,m,r)
def he(la,left,m,r):
    t=[0]*(r-left+1)
    k,i,j=0,left,m+1
    while i<=m and j<=r:
        if la[i]<=la[j]:
            t[k]=la[i]
            i+=1
            k+=1
        else:
            t[k]=la[j]
            j+=1
            k+=1
    if i<=m:
        t[k:]=la[i:m+1]
    elif j<=r:
        t[k:]=la[j:r+1]
    la[left:r+1]=t    
    """
    while i<=m:
        t[k]=la[i]
        k+=1
        i+=1        
    while j<=r:
        t[k]=la[j]
        k+=1
        j+=1
    """
    #la[left:r+1]=t
la=[1,2,15,4,3,5,7,7,6,9,8,25,34,45,56,767,4,5,6,7]
guibing(la,0,19)
print(la)'''

"""
public class RandomIdGenerator implements IdGenerator {  实现接口
  private static final Logger logger = LoggerFactory.getLogger(RandomIdGenerator.class);

  @Override
  public String generate() throws IdGenerationFailureException {  异常------334
    String substrOfHostName = null;
    try {
      substrOfHostName = getLastFieldOfHostName();
    } catch (UnknownHostException e) {                   异常再次包装,隐藏下层细节
      throw new IdGenerationFailureException("...", e);  异常------334  
    }
    long currentTimeMillis = System.currentTimeMillis();
    String randomString = generateRandomAlphameric(8);
    String id = String.format("%s-%d-%s",
            substrOfHostName, currentTimeMillis, randomString);
    return id;
  }

  private String getLastFieldOfHostName() throws UnknownHostException{  --私有
    String substrOfHostName = null;
    String hostName = InetAddress.getLocalHost().getHostName();
    if (hostName == null || hostName.isEmpty()) {                 --过滤--参数下传前判断
      throw new UnknownHostException("...");
    }
    substrOfHostName = getLastSubstrSplittedByDot(hostName);   参数有保障了
    return substrOfHostName;
  }

  @VisibleForTesting
  protected String getLastSubstrSplittedByDot(String hostName) {  
    if (hostName == null || hostName.isEmpty()) {             --入参判断
      throw new IllegalArgumentException("...");
    }

    String[] tokens = hostName.split("\\.");
    String substrOfHostName = tokens[tokens.length - 1];
    return substrOfHostName;
  }

  @VisibleForTesting
  protected String generateRandomAlphameric(int length) {  --入参判断  
    if (length <= 0) {
      throw new IllegalArgumentException("...");
    }

    char[] randomChars = new char[length];
    int count = 0;
    Random random = new Random();
    while (count < length) {
      int maxAscii = 'z';
      int randomAscii = random.nextInt(maxAscii);
      boolean isDigit= randomAscii >= '0' && randomAscii <= '9';
      boolean isUppercase= randomAscii >= 'A' && randomAscii <= 'Z';
      boolean isLowercase= randomAscii >= 'a' && randomAscii <= 'z';
      if (isDigit|| isUppercase || isLowercase) {
        randomChars[count] = (char) (randomAscii);
        ++count;
      }
    }
    return new String(randomChars);
  }
}



  @VisibleForTesting
  protected String generateRandomAlphameric(int length) {  --入参判断  
    if (length <= 0) {
      throw new IllegalArgumentException("...");
    }


  @VisibleForTesting
  protected String generateRandomAlphameric(int length) throws IllegalArgumentException {  
    if (length <= 0) {                                 --入参判断  
      throw new IllegalArgumentException("...");
    }

提问:
抛出这个异常说明方法传入一个非法的或者不合适的参数。
举个例子:getUser(int username)方法,不允许传入空字符串或者null。但是有个调用的方法,没做检查,
传入了null或者空字符串,这时候getUser方法就应该要抛出IllegalArgumentException告诉调用者:hi!这个参数不能为empty或者null。
java.lang.IllegalArgumentException继承至RuntimeException,所以它是一个unchecked异常,它不需要在方法里加throws声明!



class Solution:
    def helan_flag(self, nums) :
       
        #三指针法,一个最右边,一个 slow ,fast ,缩写了 
        fast =c =s= slow=0
        e=len(nums)-1
        while c <= e:
            if nums[c] ==0:
                nums[c],nums[s] = nums[s],nums[c]
                c += 1
                s += 1
            elif nums[c]==1:
                c += 1
            elif nums[c]==2:
                nums[c],nums[e] = nums[e],nums[c]
                e -= 1
""" 














'''


#归并
def gui(la,a,r):
    if a<r:
        mid =a+r>>1 
        gui(la,a,mid)
        gui(la,mid+1,r)
        he(la,a,mid,r)
def he(la,a,mid,r):
    i,j,k=a,mid+1,0
    t=[0]*(r-a+1)
    while i<= mid and j<=r:
        if la[i]<=la[j]:
            t[k],k,i=la[i],k+1,i+1
        else:
            t[k],k,j=la[j],k+1,j+1
    if i<=mid:t[k:] =la[i:mid+1] 
    elif j<=r:t[k:] =la[j:r+1]
    la[a:r+1] =t
la=[1,2,15,4,3,5,7,7,6,9,8,25,34,45,56,767,4,5,6,7]
gui(la,0,19)
print(la)









#快速
def qsort(la,a,r):
    if a<r:
        t=la[r]
        slow=a 
        for i in range(a,r):
            if la[i]<t:
                la[i],la[slow]=la[slow],la[i]
                slow+=1
        la[slow],la[r] =t,la[slow]
        
        qsort(la,a,slow -1)
        qsort(la,slow +1,r)

la=[1,2,15,4,3,5,7,7,6,9,8,25,34,45,56,767,4,5,6,7]
qsort(la,0,19)
print(la)



#堆
def dui(la):
    def adj(la,pos,r):
        er=pos+pos+1 
        if er + 1 < r and la[er]<la[er+1]:
            er+=1
        if er<r and la[er] > la[pos]:
            la[er],la[pos]= la[pos],la[er]
            adj(la,er,r)

    k=len(la)
    half=k//2-1
    
    for i in range(half,-1,-1):
        adj(la,i,k)

    for i in range(k-1,0,-1):
        la[0],la[i] =la[i],la[0]
        adj(la,0,i)
la=[1,2,15,4,3,5,7,7,6,9,8,25,34,45,56,76,7,4,5,6,799]
dui(la)
print(la)


def dsort(la):
    def adj(la,pos,r):
        er=pos+pos +1
        if er+1<r and la[er+1] > la[er]: #找高个,向右看齐
            er+=1
        if er<r and la[er] > la[pos]:
            la[er] ,la[pos]= la[pos], la[er] #上任,并告诉下属选人方法
            adj(la,er,r)

    k=len(la)
    half = k//2 -1
    for i in range(half,-1,-1):
        adj(la,i,k)

    for i in range(k-1,-1,-1):
        la[0],la[i] =la[i],la[0]
        adj(la,0,i)


def dui(la):
    def adj(la,pos,k):
        er=pos+pos+1
        if er+1<k and la[er+1]>la[er]:
            er+=1
        if er<k and la[er]>la[pos]:
            la[er],la[pos]=la[pos],la[er]
            adj(la,er,k)
    k=len(la)
    half=k//2-1
    for i in range(half,-1,-1):
        adj(la,i,k)
    for i in range(k-1,-1,-1):
        la[i],la[0]=la[0],la[i]
        adj(la,0,i)

la=[1,2,15,4,3,5,7,6,9,8,25,5,5,5]
dui(la)
print(la)



#冒泡

def pao(la):
    k=len(la)
    for i in range(k):
        for j in range(k-1-i):
            if la[j]>la[j+1]:
                la[j],la[j+1]=la[j+1],la[j]
la=[1,2,15,4,3,5,7,6,9,8,25,5,5,5]
pao(la)
print(la)

#选择
def select(la):
    k=len(la)
    for i in range(k):
        index=i
        for j in range(i+1,k):
            if la[j]<la[index]:
                index=j
        la[i],la[index]=la[index],la[i]

la=[1,2,15,4,3,5,7,6,9,8,25,5,5,5]
select(la)
print(la)

la=[3,2,1,6,5,4,9,8,7]
def se(la):
    k=len(la)
    for i in range(k-1):
        index =i
        for j in range(i+1,k):
            if la[j]<la[index]:
                index=j 
        la[i],la[index]=la[index],la[i]



#插入


la=[3,2,1,6,5,4,9,8,7]
def insert(la):
    k=len(la)
    for i in range(1,k):
        for j in range(i,0,-1):
            if la[j]<la[j-1]:
                la[j],la[j-1]=la[j-1],la[j]
            else:break
insert(la)
print(la)



def kuai(la,a,r):
    if a<r:
        t=la[r]
        slow = a
        for f in range(a,r):
            if la[f] < t:
                la[slow] ,la[f] = la[f],la[slow] 
                slow+=1
        la[slow] ,la[r]= la[r],la[slow]

        kuai(la, a, slow-1)
        kuai(la ,slow+1, r)

la=[3,2,1,6,5,4,9,8,7,8,8,9,9,90]
kuai(la,0,13)
print(la)
            

def kuai(la,a,r):
    if a<r:
        t=la[a]
        slow = a
        for f in range(a+1,r+1):
            if la[f] > t:
                slow+=1
                la[slow] ,la[f] = la[f],la[slow] 
                
        la[slow] ,la[a]= la[a],la[slow]

        kuai(la, a, slow-1)
        kuai(la ,slow+1, r)

la=[3,2,1,6,5,4,9,8,7,8,8,9,9,90]
kuai(la,0,13)
print(la)


'''



上一篇下一篇

猜你喜欢

热点阅读