Program Sorting pada Python


def ss():
    n=int(raw_input('Masukkan Banyaknya Bilangan: '))
    bilangan=[]
    for i in range(n):
        print 'Bilangan Ke-',i+1,
        bil=int(raw_input(': '))
        bilangan.append(bil)
    print 'Daftar Bilangan Sebelum Diurutkan: ',bilangan  

    i=0
    while i<n-1:
        kecil=i
        j=i+1
        while j<=n-1:
            if bilangan[j]<bilangan[kecil]:
                kecil=j
            j=j+1
        if kecil!=i:
            temp=bilangan[i]
            bilangan[i]=bilangan[kecil]
            bilangan[kecil]=temp
            print 'Proses Mengurutkan ',i+1,': ', bilangan
        i=i+1
    print 'Daftar Bilangan Setelah Diurutkan: ',bilangan
 
def es():
    n=int(raw_input('Masukkan Banyaknya Bilangan: '))
    bilangan=[]
    for i in range(n):
        print 'Bilangan Ke-',i+1,
        bil=int(raw_input(': '))
        bilangan.append(bil)
    print 'Daftar Bilangan Sebelum Diurutkan:',bilangan  

   
    i=0
    while i<n:
        j=i+1
        while j<n:
            if bilangan[i]>bilangan[j]:
                temp=bilangan[i]
                bilangan[i]=bilangan[j]
                bilangan[j]=temp
                print 'Proses Mengurutkan ',i+1,': ', bilangan
            elif bilangan[j]==bilangan[i]:
                print 'bilangan yang ingi ditukar bernilai sama'
            else:
                bilangan[i]
            j=j+1
        i=i+1
    print 'Daftar Bilangan Setelah Diurutkan: ',bilangan

def ins():
    n=int(raw_input('Masukkan Banyaknya Bilangan: '))
    bilangan=[]
    for i in range(n):
        print 'Bilangan Ke-',i+1,
        bil=int(raw_input(': '))
        bilangan.append(bil)
    print 'Daftar Bilangan Sebelum Diurutkan:',bilangan
 
    i=1
    while i < n:  
        kcl=i
        j=i-1
        while j >= 0:
            if bilangan[kcl]<bilangan[j]:              
                temp=bilangan[j]
                bilangan[j]=bilangan[kcl]
                bilangan[kcl]=temp
                tukar=i+1
                print 'Proses Mengurutkan ',i+1,': ', bilangan
                kcl=j
            j=j-1                
        i=i+1
    print 'Daftar Bilangan Setelah Diurutkan: ',bilangan


def coba():
    option1 = raw_input('Mau Coba Lagi [Y/T]?').upper()
    if option1 not in ('Y','T'):
        coba()
    if(option1 == 'Y'):
        menu()
    if (option1 == 'T'):
        exit

def menu():
    print '''
    ===== MENU PROGRAM SORTING =====
   ||               1. SELECTION SORT                     ||
   ||               2. EXCHANGE SORT                     ||
   ||               3. INSERTION SORT                      ||
   ||               4. KELUAR                                      ||
   ==========SILAHKAN PILIH==========
       '''
    option2 = raw_input("Masukkan Pilihan (1/2/3/4): ")
    if(option2 == '1'):
        ss()
        coba()
    elif(option2 == '2'):
        es()
        coba()
    elif(option2 == '3'):
        ins()
        coba()
    elif(option2 == '4'):
         exit
    else:
        menu()

menu()


Program Konversi Infix Menjadi Postfix Pada Python

def push(stackArr,element):
stackArr.append(element)

def pop(stackArr):
return stackArr.pop()

def Operand(s):
if(not(Operator(s)) and (s != "(") and (s != ")")):
return 1
return 0

def Operator(s):
if(s == "+" or s == "-" or s == "*" or s == "/" or s == "%" or s == "^"):
return 1
return 0

def top(stackArr):
return(stackArr[len(stackArr)-1])

def isEmpty(stackArr):
if(len(stackArr) == 0):
return 1
return 0

def precedence(s):
if(s == "^"):
return 5
elif((s == "*") or (s == "/") or (s == "%")):
return 4
elif((s == "+") or (s == "-")):
return 3
elif(s == "("):
return 2
else:
return 1

def infix(infixStr,postfixStr = [],retType = 0):
postfixStr = []
stackArr = []
postfixPtr = 0
tempStr = infixStr
infixStr = []
infixStr = strToTokens(tempStr)
for i in infixStr:
if(Operand(i)):
postfixStr.append(i)
postfixPtr = postfixPtr+1
if(Operator(i)):
if(i != "^"):
while((not(isEmpty(stackArr))) and (precedence(i) <= precedence(top(stackArr)))):
postfixStr.append(top(stackArr))
pop(stackArr)
postfixPtr = postfixPtr+1
else:
while((not(isEmpty(stackArr))) and (precedence(i) < precedence(top(stackArr)))):
postfixStr.append(top(stackArr))
pop(stackArr)
postfixPtr = postfixPtr+1
push(stackArr,i)
if(i == "("):
push(stackArr,i)
if(i == ")"):
while(top(stackArr) != "("):
postfixStr.append(pop(stackArr))
postfixPtr = postfixPtr+1
pop(stackArr)

while(not(isEmpty(stackArr))):
if(top(stackArr) == "("):
pop(stackArr)
else:
postfixStr.append(pop(stackArr))

returnVal = ''
for i in postfixStr:
returnVal += i

if(retType == 0):
return(returnVal)
else:
return(postfixStr)

def postfix(postfixStr):
stackArr = []
tempStr = postfixStr
postfixStr = []
postfixStr = tempStr
for i in postfixStr:
if(Operand(i)):
push(stackArr,i)
else:
temp = top(stackArr)
pop(stackArr)
pop(stackArr)
push(stackArr,pushVal)
return(top(stackArr))

def strToTokens(str):
strArr = []
strArr = str
tempStr = ''
tokens = []
tokens_index = 0
count = 0
for i in strArr:
count = count+1
if(Operand(i)):
tempStr += i
if(Operator(i) or i == ")" or i == "("):
if(tempStr != ""):
tokens.append(tempStr)
tokens_index = tokens_index+1
tempStr = ''
tokens.append(i)
tokens_index = tokens_index+1
if(count == len(strArr)):
if(tempStr != ''):
tokens.append(tempStr)
return(tokens)


def menu():
def back():
option1 = raw_input('Mau Coba Lagi [Y/T]?').upper()
if option1 not in ('Y','T'):
back()
if(option1 == 'Y'):
menu()
if(option1 == 'T'):
exit

print '\n Menu yang dapat anda pilih'
print '\n(1) Ubah Infix Menjadi Postfix'
print '(2) Keluar'
option2 = raw_input("Masukkan Pilihan (1/2): ")
if option2 in ('1','2'):
if(option2 == '1'):
ifx = raw_input('\nMasukkan Notasi Infix : ')
print 'Notasi Postfix : ', infix(ifx)
if(option2 == '2'):
exit
if(option2 != '2'):
back()
else:
menu()

menu()

Buscar

 

Gunadarma

About Me

My photo
I'm college student of Gunadarma University. Majoring Informatic Engineering.
Thiinnkk Copyright © 2011 | Tema diseñado por: compartidisimo | Con la tecnología de: Blogger