Senin, 16 Mei 2016

Tugas Insertion Sort

- Permasalahan
Bagaimana cara kita supaya dapat mengurutkan angka dengan menggunakan cara insertion sort. Insertion sort adalah sebuah algoritma pengurutan yang membandingkan dua elemen data pertama, mengurutkannya, kemudian mengecek elemen data berikutnya satu persatu dan membandingkannya dengan elemen data yang telah diurutkan.

- Analisi
 Insertion sort adalah sebuah algoritma pengurutan yang membandingkan dua elemen data pertama, mengurutkannya, kemudian mengecek elemen data berikutnya satu persatu dan membandingkannya dengan elemen data yang telah diurutkan.
 
contoh pengerjaan :
 
4  7  6  5  8
4  9  7  6  5  8
4  7  9  6  5  8
4  6  7  9  5  8
4  5  6  7  9  8
4  5  6  7  8  9

- Input dan Output

    input = 9  4  7  6  5  8
    output = 4  5  6  7  8  9
- Algoritma
Deklarasi
a,c,d, e, f, g        : integer
temp                   : integer
data[]                  : integer
Deskripsi
 
for(f=1;f<=a;f++)
temp <= data[f]
 g <= f-1
while(data[g]>temp && g>=0)
data[j+1] <- data[ j ]
data[j+1] <- temp
end while
end for
end
 
 
- Program
 

#include <iostream>
#include <conio.h>

using namespace std;

int data[10],data2[10];
int a;
void ganti(int c, int d){
int e;
e=data[d];
data[d]=data[c];
data[c]=e;}
void sort(){
int temp,f,g;
for(f=1;f<=a;f++){
temp = data[f];
g = f -1;
while(data[g]>temp && g>=0){
data[g+1] = data[g];
g--;}
data[g+1] = temp;}
}
int main(){
cout<<"  "<<endl;
cout<<"banyak data : ";cin>>a;
cout<<"inputkan angka  "<<endl;
for(int f=1;f<=a;f++){
cout<<"input "<<f<<" : ";
cin>>data[f];
data2[f]=data[f];
}
sort();
cout<<"Data Inserting Sort : ";
for(int f=1; f<=a; f++){
cout<<" "<<data[f];}
getch();
return 0;
}

Blog Ahmad Rizaldo
 
Blog Awang Ginanjar
 

Kasus 8.7 Alpro

Algoritma :
Deklarasi
       i, j, p : integer
Deskripsi
       p <-- data[(L+R) div 2]
       i <-- L
      j <--R
     { mulai membuat partisi }
      while (i<=j) do
               while (data[i] < p) do i <-- i+1 endwhile
               while (data[j] > p) do j <-- j -1 endwhile
         if (i<=j) then
              tukar(data[i], data[j])
              i <-- i+1
              j <-- j-1
        endif
     endwhile
     if (L < j) then quick_sort(data,L,j) endif
     if (i < R) then quick_sort(data,i,R) endif

Kasus 8.5 Alpro

Algoritma :
Deklarasi
       i, t : integer
Deskripsi
      for i <-- 1 to n do
            minimum(A, i, n, t);
            tukar(A[i], A[t]); {tukar tempat elemen saat ini j dengan elemen terkecil yang ditemukan t}
    endfor

Kasus 8.4 Alpro

Algoritma :
Deklarasi
       k, j, temp : integer
Deskripsi
       for k <-- 2 to n do
            temp := data [k];
            j := k-1;
       while (temp <= data [j]) and (j > 1) do
               data [j+1] := data [j];
               j := j-1;
       endwhile
       if (temp >= data [j]) then data [j+1] := temp
       else
             data [j+1] := data [j];
             data [j] := temp;
        endif
   endfor

Kasus 8.3 Alpro

Algoritma :
Deklarasi
       larik = array [1..100] of integer
       i, a : byte
       k : larik
       j, bantu : integer
Deskripsi
       for i <-- 1 to n-1 do
          for j <-- i+1 to n do
             if x[i] > x[j] then
                tukar(x[i], x[j])
             endif
          endfor
      endfor

Kasus 8.2 Alpro

Algoritma :
Deklarasi
       ketemu : boolean
       i, middle : integer
Deskripsi
       ketemu <-- false
       while (low <= high) and (not ketemu) do
           middle <-- (low+high) div 2
           if (kunci = aray[middle]) then ketemu <-- true { data pencarian = data di tengah }
           else if (kunci < aray[middle]) then high <-- middle – 1 {data akan dicari lagi di sebelah kiri}
           else low <-- middle + 1 {data akan dicari lagi di sebelah kanan}
           endif
       endwhile
       if ketemu then pencarianBiner := middle
       else pencarianBiner := -1;
      endif

Kasus 8.1 Alpro

Algoritma :
Deklarasi
       ketemu : boolean
       i, n : integer
Deskripsi
      ketemu <-- false;
      n <-- 1
     while ((n < ukuran) and (not ketemu)) do
         if (aray[n] = kunci) then
             ketemu <-- true { data ketemu }
             i <-- n { pada posisi ke-i }
         endif
         else n <-- n+1 { cek data berikutnya }
     endwhile
     if ketemu then pencarianLinier <-- i { data ketemu pada posisi ke-i }
     else pencarianLinier <-- -1 { data tidak ketemu }
     endif
  end