Insertion Sort

Permasalahan :
mengurutkan data acak menggunakan  metode insertion sort .

11. Metode :
1.Menentukan n atau banyak data yang akan kita proses nanti.
2.program akan membaca dan kita akan memasukkan angka / banyak data sesuai batas n yang telah 3.Tentukan pada langkah pertama.
4.Lalu data data yang telah diinput akan dicetak / ditampilkan.
5.program akan menyeleksi dan menentukan nilai minimum dari data yang diinput.
6.setelah nilai minimum ditemukan program akan melanjutkan  proses sorting yaitu mengurutkan 7.data dari kiri kekanan, atau dari array 1 ke-n, data minimum diletakkan pada sebelah kiri pada 8.pembacaan data selanjutnya, jika data ketiga lebih kecil dari kedua maka akan digeser atau      dipindah begitu seterusnya sampai nilai ke-n.


  • data pertama sudah ada ditangan kiri, yaitu : 2
  •  data kedua yaitu 8 diambil dari meja
  •  dilalukan penggeseran elemen :
  •  data baru masuk pada posisi ke - [2]
  •  data saat ini adalah : 2 8
  •  data ketiga yaitu 1 diambil dari meja
  •  dilakukan penggeseran elemen :
  •  data pada posisi ke-[2] digeser ke posisi [3]
  •  data pada posisi ke-[1] digeser ke posisi [2]
  •  data baru masuk pada posisi ke-[1]
  •  data saat ini adalah : 1 2 8
  •  data keempat yaitu 5 diambil dari meja
  •  dilakukan penggeseran elemen :
  •  data pada posisi ke-[3] digeser ke posisi [4]
  •  data baru masuk pada posisi ke-[3]
  •  data saat ini adalah : 1 2 5 8
  •  data ke-5 yaitu 0 diambil dari meja
  •  dilakukan penggeseran elemen :
  •  data pada posisi ke-[4] digeser ke posisi [5]
  •  data pada posisi ke-[3] digeser ke posisi [4] dan seterusnya.

 Flowchart :




Algoritma :

procedure insertion_sort(input/output data:larik; input n:integer)
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


Program C++ :

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

using namespace std;

class Sorting {
friend istream& operator>>(istream& in, Sorting& a);
friend ostream& operator<<(ostream& out, Sorting& a);
public:
void baca_data();
void cetak_data();
void buble_sort();
void insertion_sort();
void selection_sort();
private:
void minimum(int , int, int&);
void tukar (int&, int&);
int data[10], n;
};
istream& operator>>(istream& in, Sorting& a) {
cout<<"Banyak data : ";
in>>a.n;
for (int i = 0; i < a.n; i++) {
cout<<"Data ke-" <<i+1<< " : ";
in>>a.data[i];
}
return in;
}
ostream& operator<<(ostream& out, Sorting& a) {
for (int i = 0; i < a.n; i++)
out<<a.data[i] << " ";
out<<"\n";
return out;
}
void Sorting::tukar (int &a, int &b){
int temp;
temp = a;
a = b;
b = temp;
}
void Sorting::insertion_sort(){
int i, j, temp;
cout<<"Data pertama sudah ada ditangan kiri, yaitu : " << data[0] << '\n';
for(j = 1; j < n; j++){
temp = data[j];
cout<<"\nData ke-" << j+1 << " yaitu " << data[j] << " diambil dari meja\n";
cout<<"Dilakukan penggeseran elemen :\n";
for(i = j - 1; (i >= 0) && (data[i] > temp); i--){
cout<<"data pd posisi ke-[" << i+1 << "] digeser ke posisi [" << i+2 << "]\n";
data[i+1] = data[i];
}
cout<<"Data baru masuk pada posisi ke-[" << i+2 << "]\n";
data[i+1] = temp; //Insert key into proper position
cout<<"Data saat ini adalah : ";
for (int k=0; k<=j; k++) cout << data[k] << " ";
getch();
}
}
int main(int argc, char** argv) {
Sorting angka;
cin>>angka;
angka.insertion_sort();
cout<<"\nHasil akhir adalah : \n";
cout<<angka;

return 0;
}

Output :



Waktu Mengerjakan : 3jam 20 menit

Share this

Related Posts

Previous
Next Post »