SHORTING

SHORTING
1.     BUBBLE SHORT
Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat. Berikut SourceCodenya:
listData = [3,4,100,90,70]
iterasi = 0
for x in range (1,len(listData)):
        for y in range (len(listData)-1):
                iterasi += 1
                if listData[y] > listData[y+1]:
                        listData[y], listData[y+1] = listData[y+1], listData[y]
                print(listData)
print(iterasi)
2.     SELECTION SHORT
Pengurutan dilakukan dengan memilih elemen terbesar dan menempatkan pada posisinya,kemudian mencari element terbesar berikutnya dan menempatkan pada tempatnya, dan seterusnya.
Proses pengurutan dengan menggunakan metode selection sort secara terurut naik adalah:
1.     Mencari data terkecil dari data pertama sampai data terakhir, kemunian di tukar   posisinya dengan data pertama.
2.     Mencari data terkecil dari data kedua sampai data terakhir, kemudian di tukar dengan posisinya dengan data kedua.
3.     Mencari data terkecil dari data ketiga sampai data terakhir, kemudian di tukar posisinya dengan data ketiga
4.     dan seterusnya sampai semua data turut naik. apabila terdapat n buah data yang akan di urutkan, maka membutukan (n – 1) langkah pengurutan, dimana data terakhir yaitu data ke-n tidak perlu di urutkan karena hanya tinggal satu satunya.
Berikut SourceCodenya:
listData = [3,4,100,90,70]
iterasi = 0

for x in range(0,len(listData)-1):
    minIndex = x
    for y in range(x+1,len(listData)):
        iterasi += 1
        if listData[y] < listData[minIndex]:
            minIndex = y
    listData[x],listData[minIndex] = listData[minIndex],listData[x]
    print(listData)

print(iterasi)
3.     SELECTION SHORT
Data dicek satu per satu mulai dari yang kedua sampai dengan yang terakhir. Apabila
ditemukan data yang lebih kecil daripada data sebelumnya, maka data tersebut disisipkan
pada posisi yang sesuai. Akan lebih mudah apabila membayangkan pengurutan kartu.
Pertama-tama anda meletakkan kartu-kartu tersebut di atas meja, kemudian melihatnya
dari kiri ke kanan. Apabila kartu di sebelah kanan lebih kecil daripada kartu di sebelahkiri, maka ambil kartu tersebut dan sisipkan di tempat yang sesuai. SourdCodenya yaitu sebagai berikut:
def insertionSort(listData):
    iterasi = 0
    for x in range(1, len(listData)):
        print(listData)
        key = listData[x]
        ind = x
        while ind > 0 and listData[ind-1] > key:
            iterasi += 1
            listData[ind] = listData[ind-1]
            ind -= 1
        listData[ind] = key
    print(listData)
    print(iterasi)
    
b = [45, 99, 64, 7, 85, 310]
insertionSort(b)
4.     QUICK SHORT
Quicksort dimulai dengan menscan daftar yang disortir untuk nilai median. Nilai ini, yang disebut tumpuan (pivot), kemudian dipindahkan ke satu sisi pada daftar dan butir-butir yang nilainya lebih besar dari tumpuan di pindahkan ke sisi lain. SourdCodenya yaitu sebagai berikut:
def QuickSort(A,start,end):
    if start<end:
        pindex=partition(A,start,end)
        QuickSort(A,start,pindex-1)
        QuickSort(A,pindex+1,end)

def partition(A,start,end):
    pivot = A[end]
    pindex = start
    for i in range(start,end):
        if (A[i] <= pivot):
            A[i],A[pindex]=A[pindex],A[i]
            pindex += 1
    A[pindex],A[end] = A[end],A[pindex]
    return pindex

A = [54,26,93,17,77,31,44,55,20]
QuickSort(A,0,len(A)-1)
print(A)
5.     MERGED SHORT
Metode penggabungan biasanya digunakan pada pengurutan berkas. Prinsip dari metode penggabungan sebagai berikut : mula-mula diberikan dua kumpulan data yang sudah dalam keadaan urut. Kedua kumpulan data tersebut harus dijadikan satu table sehingga dalam keadaan urut. SourdCodenya yaitu sebagai berikut:
def mergeSort(nlist):
    print("Splitting ",nlist)
    if len(nlist)>1:
        mid = len(nlist)//2
        lefthalf = nlist[:mid]
        righthalf = nlist[mid:]

        mergeSort(lefthalf)
        mergeSort(righthalf)
        i=j=k=0      
        while i < len(lefthalf) and j < len(righthalf):
            if lefthalf[i] < righthalf[j]:
                nlist[k]=lefthalf[i]
                i=i+1
            else:
                nlist[k]=righthalf[j]
                j=j+1
            k=k+1

        while i < len(lefthalf):
            nlist[k]=lefthalf[i]
            i=i+1
            k=k+1

        while j < len(righthalf):
            nlist[k]=righthalf[j]
            j=j+1
            k=k+1
    print("Merging ",nlist)

nlist = [79, 87, 8, 38, 2, 18]
mergeSort(nlist)
print(nlist)
6.     SELL SHORT
Merupakan algoritma yang stau jenis dengan insertion sort, dimana pada setiap nilai i dalam n/i item diurutkan. Pada setiap pergantian nilai, i dikurangi sampai 1 sebagai nilai terakhir. SourdCodenya yaitu sebagai berikut:
def shellSort(alist):
    sublistcount = len(alist)//2
    while sublistcount > 0:
        for start_position in range(sublistcount):
            gap_InsertionSort(alist, start_position, sublistcount)
            print("After increments of size",sublistcount, "The list is",nlist)
        sublistcount = sublistcount // 2

def gap_InsertionSort(nlist,start,gap):
    for i in range(start+gap,len(nlist),gap):

        current_value = nlist[i]
        position = i

        while position>=gap and nlist[position-gap]>current_value:
            nlist[position]=nlist[position-gap]
            position = position-gap

        nlist[position]=current_value


nlist = [3,4,100,90,70]
shellSort(nlist)
print(nlist)



Di post oleh :
1. FITRI ANISA (170411100014)
2. DHEA OKY SYAFITRI (170411100006)

Komentar

Postingan populer dari blog ini

Class and Object in Python

STACK AND QUEUE POSTFIX AND PREFIX

DOUBLE LINKED LIST