Program Sorting dalam bentuk Python

Posted by mahfuz On Jumat, 01 April 2011 0 komentar
Pengurutan data dalam struktur data sangat penting terutama untuk data yang beripe data
numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending
(urut turun). Pengurutan (Sorting) adalah proses pengurutan data yang sebelumnya disusun secara
acak sehingga tersusun secara teratur menurut aturan tertentu.
Contoh:
Data Acak : 5 6 8 1 3 25 10
Ascending : 1 3 5 6 8 10 25
Descending : 25 10 8 6 5 3 1
Deklarasi Array Sorting
Mendeklarasikan array secara global:
int data[100];
int n; //untuk jumlah data
Fungsi Tukar 2 Buah Data:
void tukar(int a,int b){
int tmp;
tmp = data[a];
data[a] = data[b];
data[b] = tmp;
}


Ada beberapa jenis sorting:
1. Bubble Sort
2. Insertion Sort
3. Selection Sort
4. Shell Sort
5. Merge Sort
6. Quick Sort
7. Interpolation Sort
8. Exchange Sort, dll

Contoh program sorting dalam bentuk python:

list=[] #deklarasi list sebagai array

#fungsi tukar
def swap(a,b):
    list[a],list[b]=list[b],list[a]

def awal():

    print "MAHFUZ"
    print "100533405403"
    print "Program Sorting"
    print "Menu Pilihan"
    print " 1) Create Program"
    print " 2) Exit"
   
    data=input ("masukan pilihan :")
    if data==1:
        array()
    elif data==2:
        exit()


def array():
    jumlah=input("Jumlah data acak : ")
    awal=0
    while (awal<jumlah):
        awal=awal+1
        bil=input("input data ke-%d:"%awal)
        list.append(bil)
    print "data acak =", list
    pilih(jumlah)
   
def pilih(jumlah):  
    print "Pilih Jenis Sorting :"
    print "1) Bubble sort"
    print "2) Sekection sort"
    print "3) Shell sort"
    print "4) Quick sort"
    print "5) Insertion sort"
    print "6) Exchange sort"
    choice=input("Pilihan =")
    tipe(choice,jumlah)
   
def tipe(pilih,jumlah):
    print "1) Ascending"
    print "2) Descending"
    p=input("Tipe yang dipilih :")
    if pilih==1:
        bubble(p,jumlah)
       
    elif pilih==2:
        quick(p,jumlah)
    elif pilih==3:
        shell(p,jumlah)
    elif pilih==4:
        select(p,jumlah)
    elif pilih==5:
        insert(p,jumlah)
    elif pilih==6:
        exchange(p,jumlah)
    looping()  

    print list

def looping():
    ulang=input("Apakah anda ingin mengulang(yes=1,no=2)?")
    if ulang==1:
        del list[0:1000]
       
        print "Pilih jenis data:"
        print "1) Data Input"
        print "2) Data Acak"
        u=input("Pilihan:")
        if u==1:
            data()
        elif u==2:
            darandom()
    elif ulang==2:
        loop=0
        akhir()

  #bubble Sort
def bubble(p,jumlah): 
    for a in range(0,jumlah):
            for b in range(1,jumlah):
                if p==1:
                   if list[b]<list[b-1]:
                       swap(b,b-1)
                else:
                    if list[b]>list[b-1]:
                         swap(b,b-1)
    print list

    #selection sort
def select(p,jumlah):                       
    for awal in range(0,jumlah):
            pos=awal
            for k in range(awal,jumlah):
                    if p==1:
                        if list[k]<list[pos]:
                                    pos=k
                    else:
                        if list[k]>list[pos]:
                                    pos=k
            if pos!=awal:
                    swap(pos,awal)
    print list

    #shell sort
def shell(p,jumlah):                    
    d=jumlah
    while(d>1):
            d=(d+1)/2
            for awal in range(0,jumlah-d):
                    if p==1:
                            if list[awal+d]<list[awal]:
                                    swap(awal+d,awal)
                    else:
                            if list[awal+d]>list[awal]:
                                    swap(awal+d,awal)
    print list

#quicksort
def quicksort(left,right,p):
        l=left
        r=right
        pivot=list[left]
        while(left<right):
                if p==1:
                        while((list[right]>=pivot) and left<right):
                                right=right-1
                        if(left!=right):
                                list[left]=list[right]
                                left=left+1
                        while((list[left]<=pivot) and left<right):
                                left=left+1
                        if(left!=right):
                                list[right]=list[left]
                                right=right-1
                else:
                        while((list[right]<=pivot) and left<right):
                                right=right-1
                        if(left!=right):
                                list[left]=list[right]
                                left=left+1
                        while((list[left]>=pivot) and left<right):
                                left=left+1
                        if(left!=right):
                                list[right]=list[left]
                                right=right-1
        list[left]=pivot
        pivot=left
        left=l
        right=r
        if left<pivot:
                quicksort(left,pivot-1,p)
        if right>pivot:
                quicksort(pivot+1,right,p)

def quick(p,jumlah):
        quicksort(0,jumlah-1,p)
        print list

#insertion sort
def insert(p,jumlah):                       
    for i in range(1,jumlah):
        temp=list[i]
        j=i-1
        if p==1:
                while list[j]>temp and j>=0:
                        list[j+1]=list[j]
                        j=j-1
        else:
                while list[j]<temp and j>=0:
                        list[j+1]=list[j]
                        j=j-1
        list[j+1]=temp
    print list

#insertion sort
def insert(p,jumlah):                       
    for awal in range(1,jumlah):
        temp=list[awal]
        jumlah=awal-1
        if p==1:
                while list[jumlah]>temp and jumlah>=0:
                        list[jumlah+1]=list[jumlah]
                        jumlah=jumlah-1
        else:
                while list[jumlah]<temp and jumlah>=0:
                        list[jumlah+1]=list[jumlah]
                        jumlah=jumlah-1
        list[jumlah+1]=temp
    print list

#exchange sort
def exchange(p,jumlah):                 
    for awal in range(jumlah-1):
        for k in range(awal+1,jumlah):
            if p==1:
                if list[k]<list[awal]:
                    swap(k,awal)
    else:
        if list[k]>list[awal]:
            swap(k,awal)
    print list
print awal()

#fungsi menu exit
def exit():
    print "Good Luck"



selamat mempelajari!!
sukses selalu bro!!

0 komentar:

Posting Komentar