Alpro : Quick sort

Preview:

DESCRIPTION

Algoritma Quick Short

Citation preview

QUICK SORTAlgoritma Pengurutan

SIMULASI QUICKSORT

3 2 5 1 4

31 52 4

1 2

21

5 4

4 5

RESULT

1 2 3 4 5

3

21 4 5

SIMULASI ALGORITMA QUICKSORT

3 2 5 1 4

QuickSORT(Array, indexawal, indexakhir)

3 2 5 1 4

QuickSORT(data, 1,5)

data

indexawal indexakhir

QuickSORT(data, 1, 5)

3 2 5 1 4

data

indexawal indexakhir

STEP 1IF(indexawal < indexakhir)

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higher

Cek Lower

Cek Higher

If(indexlower < index higher)

Swap

Swap

QuickSORT(data, indexawal,

indexhigher-1)

QuickSORT(data, indexawal,

indexhigher+1)

See Code

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higher

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Lower

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Lower

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Lower

3 5 1 4

Indexhigher

Indexlower

pivot

2

While index lower < index higher Cek Lower

3 5 1 4

Indexhigher

Indexlower

pivot

2

While index lower < index higher Cek Lower

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Higher

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Higher

3 2 5 1 4

Indexhigher

Indexlower

pivot

While index lower < index higherIf(indexlower < index higher)

Swap

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higherIf(indexlower < index higher)

Swap

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Lower

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Lower

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Lower

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Higher

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Higher

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Higher

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higher Cek Higher

3 2 1 5 4

Indexhigher

Indexlower

pivot

While index lower < index higherIf(indexlower < index higher)

Swap

3 2 1 5 4

Indexhigher

Indexlower

pivot

Swap

1 2 3 5 4

Indexhigher

Indexlower

pivot

Swap

1 2 3 5 4

Indexhigher

Indexlower

pivot

Quicksorting(1,2) Quicksorting(4,5)

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher Cek Lower

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher Cek Lower

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher Cek Lower

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher Cek Lower

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher Cek Higher

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher Cek Higher

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher Cek Higher

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

While index lower < index higher

If(indexlower < index higher)

Swap

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

Swap

1 2

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

Quicksorting(1,0) Quicksorting(2,2)

5 4

Indexhigher

Indexlower

pivot

Quicksorting(4,5)

While index lower < index higher

5 4

Indexhigher

Indexlower

pivot

Quicksorting(4,5)

While index lower < index higher Cek Lower

5 4

Indexhigher

Indexlower

pivot

Quicksorting(4,5)

While index lower < index higher Cek Lower

5 4

Indexhigher

Indexlower

pivot

Quicksorting(4,5)

While index lower < index higher Cek Lower

5 4

Indexhigher

Indexlower

pivot

Quicksorting(4,5)

While index lower < index higher Cek Lower

5 4

Indexhigher

Indexlower

pivot

Quicksorting(4,5)

While index lower < index higher Cek Lower

5 4

Indexhigherpivot

Quicksorting(4,5)

While index lower < index higher Cek Higher

Indexlower

5 4

Indexhigherpivot

Quicksorting(1,2)

While index lower < index higher Cek Higher

Indexlower

5 4

pivot

Quicksorting(4,5)

While index lower < index higher

If(indexlower < index higher)

Swap

Indexlower

Indexhigher

5 4

Indexhigher

Indexlower

pivot

Quicksorting(1,2)

Swap

4 5

Indexhigher

Indexlower

pivot

Quicksorting(4,5)

Quicksorting(4,4) Quicksorting(6,5)

RESULT

1 2 3 4 5

TERIMAKASIH

C Code for QuickSORTvoid quicksort(int arr[max],int arrawal,int arrakhir){

int pivot,indexhigher,temp,indexlower;

if(arrawal<arrakhir){

pivot = arrawal;

indexlower = arrawal;

indexhigher = arrakhir;

while(indexlower<indexhigher){

while((arr[indexlower]<=arr[pivot])&&(indexlower<arrakhir)){

indexlower++;

}

while(arr[indexhigher]>arr[pivot]&&(indexhigher>arrawal)){

indexhigher--;

}

if(indexlower<indexhigher){

swap(arr,indexlower,indexhigher);

}

}

swap(arr,pivot,indexhigher);

quicksort(arr,arrawal,indexhigher-1);

quicksort(arr,indexhigher+1,arrakhir);

}

}//end

Swap code

void swap (int a[max], int left, int right){

int temp;

temp=a[left];

a[left]=a[right];

a[right]=temp;

}//end swap

Cek Lower

If(data[indexlower] <= data[pivot] && indexlower < indexakhir )

Indexlower = indexlower + 1

If(data[indexhigher] > data[pivot])

Indexhigher = indexhigher + 1

Cek Higher