matematykaszkolna.pl
Python pętle Mariusz: def heapify(A,idx,max): left=2*idx+1; right=2*idx+2; if((left<max)and(A[left]>A[idx])): largest=left; else: largest=idx; if((right<max)and(A[right]>A[largest])): largest=right; if(largest!=idx): temp=A[idx]; A[idx]=A[largest]; A[largest]=temp; heapify(A,largest,max); def buildHeap(A): n=len(A); i=n/2−1; while(i>=0): heapify(A,i,n); i−=1; def heapSort(A): buildHeap(A); n=len(A); i=n−1; while(i>=1): temp=A[0]; A[0]=A[i]; A[i]=temp; heapify(A,0,i); i−=1; from random import sample; A=sample(range(1,100),10); print A; heapSort(A); print A; Jak zamienić te pętle while na pętle for
11 gru 16:54
jc: Nie zamieniaj. Przy okazji, średniki są niepotrzebne i za to lubię Pythona. A powyższy tekst nauczył mnie jak wygenerować losową tablicę (listę): from random import sample sample(range(1,100),10)
11 gru 17:23
Mariusz: Sortowanie przez scalanie napisałem w ten sposób Podobnie jak poprzednio na podstawie pseudokodu Cormena def merge(A,p,q,r): n1=q−p+1; n2=r−q; B=[]; for i in range(p,r+1): B.append(A[i]); i=0; j=n1; k=p; while((i<n1) and (j<n1+n2)): if(B[i]<=B[j]): A[k]=B[i]; i+=1; else: A[k]=B[j]; j+=1; k+=1; while(i<n1): A[k]=B[i]; i+=1; k+=1; while(j<n1+n2): A[k]=B[j]; j+=1; k+=1; def mergesort(A,p,r): if(p<r): q=(p+r)/2; mergesort(A,p,q); mergesort(A,q+1,r); merge(A,p,q,r); Jak w Pythonie uzyskać czas działania kodu
11 gru 17:42