Selection Sort
def SelectionSort(L):
Pointer=0
while(Pointer!=(len(L)-1)):
m=L[Pointer]
for p in range(Pointer,len(L)):
if L[p]<=m:
m=L[p]
pos=p
(L[Pointer],L[pos])=(L[pos],L[Pointer])
Pointer+=1
return L
Insertion Sort
def Insertsort(L):
Pointer=1
while(Pointer!=len(L)):
m=L[Pointer]
for p in range(0,Pointer):
if L[p]>m:
pos=p
L.insert(pos,L[Pointer])
L.pop(Pointer+1)
break
Pointer+=1
return L
Merge Sort
Conquer
def Merge(A,B):
(m,n)=(len(A),len(B))
(C,i,j,k)=([],0,0,0)
while(k<m+n):
if i==m:
C.extend(B[j:])
k=k+(n-j)
elif j==n:
C.extend(A[i:])
k=k+(m-i)
elif A[i]<B[j]:
C.append(A[i])
(i,k)=(i+1,k+1)
else:
C.append(B[j])
(j,k)=(j+1,k+1)
return C
Divide
def mergsort(A):
n=len(A)
if n<=1:
return A
L=mergsort(A[:n//2])
R=mergsort(A[n//2:])
B=Merge(L, R)
return (B)
0 Comments