Given a list of n integer, find the first and last occurrences of the largest integer in the list. Given an ordered list of n distinct integers, determine the position of an integer in the list using a binary search. Given a list of n integers, sort then using an insertion sort. Given the starting and editing times of n talks, use the appropriate greedy algorithm to schedule the most talks possible in a single lecture hall. Given a list of n integers, determine the number of comparisons used by the bubble sort and by the insertion sort to sort this list
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
program pencarian data dengan bahasa C
1. Matematika Diskrit
Nama : Yogi Yaspranika
Nim : 09011181621121
Kelas : SK 3A
Dosen Pengampuh : Erwin, S.Si., M.Si.
Jurusan Sistem Komputer
Fakultas Ilmu Komputer
Universitas Sriwijaya
2017
2. 2. Given a list of n integer, find the first and last occurrences of the largest integer in the list.
Input : 4 9 7 9 3 4 2 6 4 … n
Output : Maksimum : 9
First : 2
Last : 4
Masalah:
Mencari nilai maksimum dan menampilkan kapan pertama kali muncul dan terakhir muncul.
Algoritma:
1. Buatlah sebuah larik,dengan isinya di masukkan oleh pengguna.
2. Bandingkan setiap elemen larik untuk mencari nilai terbesar di dalam larik tersebut.
3. Cari di indeks berapa elemen itu pertama kali muncul dan kapan terakhir kali, dengan
panjang elemen di mulai dari 1 sampai n.
4. Cetak hasil maksimum dan indek kemunculan pertama dan terakhir.
#include <stdio.h>
#include <stdlib.h>
typedef int array[200];
int input(array a,int n)
{
int i=1;
for (;i<=n;) {
printf("A[%d]: ",i);scanf("%d",&a[i]);
i++;
}
}
3. int maks(array a,int n)
{
int i;
if(n==1){
return a[1];
}else{
if (a[n]>maks(a,n-1)){
return a[n];
}else {
return maks(a,n-1);
}
}
}
void first_last(array a, int n,int x)
{
int first = -1, last = -1,i=1;
for (; i<n; i++)
{
if (x != a[i])
continue;
if (first == -1)
first = i;
last = i;
}
if (first != -1)
5. 4. Given an ordered list of n distinct integers, determine the position of an integer in the list using
a binary search
Masukan : 5 6 7 8 9 3 4 6 5 … n
Keluaran : Angka 9 indek ke 5
Masalah:
Mencari posisi atau indek ke berapa sebuah angka.
Algoritma:
1. Buatlah sebuah larik yang isinya di inputkan oleh pengguna, indek dimulai dari 1 sampai
n.
2. Buatlah masukkan cari sebagai tempat memasukan angka yang ingin dicari oleh
pengguna.
3. Carilah angka yang ingin dicari menggunakan algoritma pencarian biner.
4. Tampilkan hasil pencarian dengan angka yang dicari dan indek keberapa angka tersebut.
#include <stdio.h>
#include <stdlib.h>
typedef int array[200];
int input(array a,int n)
{
printf("nInput angka secara terurut menaikn");
int i=1;
for (;i<=n;) {
printf("indeks ke-[%d]: ",i);scanf("%d",&a[i]);
i++;
}
}
6. int search_biner ( int search ,int n , array a)
{
int last ,first ,m ,ada , i;
last = n - 1; first = 0; ada = -1; i = 0;
while ( ada == -1 && i < n )
{
m = ( first + last ) / 2;
if ( a[m] == search )
{
ada = m;
}
else
{
if ( a[m] < search ){
first = m + 1;
}
else{
last = m - 1;
}
}i++;
}return ada;
}
7. main ()
{
int search , result , i , n;
array a;
printf("Berapa banyak angka yang ingin di input: ");
scanf("%d" , &n);
input(a,n);
printf("Masukkan angka yang ingin dicari: ");
scanf("%d", &search);
result = search_biner( search , n ,a );
if ( result == - 1 ){
printf("nData tidak ada !! ");
}else{
printf("nAngka %d indeks ke %d", search ,result);
}
}
8. 6. Given a list of n integers, sort then using an insertion sort
Input : bilangan bulat sampai n (missal, 2 4 5 6 8 5 2 7)
Ouput : 2 2 4 5 5 6 7 8
Masalah:
Mengurutkan bilangan bulat yang di masukan secara acak menggunakan algoritma insertion sort
Algoritma:
1. Buatlah sebuah larik, untuk memasukan bilangan bulat yang di masukan secara acak oleh
pengguna.
2. Kemudian urutkan setiap bilangan bulat yang di masukan dengan membandingkan nilai
dari indek 1 sampai n dengan menggunakan algoritma insertion sort
3. Tampilkan hasil perbandingan dengan cara terurut keatas atau kebawah.
#include<stdio.h>
int main()
{
int x[200],n,jum,i,j;
printf("banyak data yang ingin diinput: ");
scanf("%d",&n);
printf("masukkan data: n");
for(i=0;i<n;i++)
{
printf("Data ke [%d]: ",i);
scanf("%d",&x[i]);
}
for(i=1;i<n;i++)
{
jum = x[i];
10. 8. Given the starting and editing times of n talks, use the appropriate greedy algorithm to
schedule the most talks possible in a single lecture hall.
Input : Time : 5 6 3 8 7 2
Ending : 3 5 4 9 6 4
Ouput : 1 1 2 4
Masalah:
Mencari pembicaraan yang paling banyak di lakukan di dalam kelas
Algoritma:
1. Buatlah dua buah larik.
2. Satu buah larik berisi waktu dimulai pembicaraan dan satu lagi untuk waktu kapan
pembicaraan diam.
3. Bandingkan antara larik satu dan dua dengan menggunakan algoritma greedy untuk
mencari jadwal pembicaraan.
4. Tampilkan hasil pencarian
#include<stdio.h>
void Activitas(int s[], int e[], int n)
{
int i, j;
printf ("pembicaraan yang paling banyak n");
i = 1;
printf("%d ", i);
for (j = 1; j < n; j++)
{
if (s[j] >= e[i])
{
printf ("%d ", j);
11. i = j;
}
}
}
int e(int e[30], int n)
{
int i=1;
printf("waktu diam:n");
for (;i<=n;) {
printf("indeks ke-[%d]: ",i);
scanf("%d",&e[i]);
i++;
}
}
int s(int s[30],int n)
{
int i=1;
printf("waktu:n");
for (;i<=n;) {
printf("indeks ke-[%d]: ",i);
scanf("%d",&s[i]);
i++;
}
}
12. int main()
{
int time[30] ;
int ending[30] ;
int n;
printf("Masukkan panjang waktu: ");
scanf("%d",&n);
s(time,n);
e(ending,n);
Activitas(time, ending, n);
return 0;
}
13. 10. Given a list of n integers, determine the number of comparisons used by the bubble sort and
by the insertion sort to sort this list
Input : bilangan bulat sampai n ( missal, 3 5 4 8 2 9 1 )
Ouput :
Data tak terurut: 3 5 4 8 2 9 1
Perbandingan 1 : 3 4 5 2 8 1 9
Perbandingan 2 : 3 4 2 5 1 8 9
Perbandingan 3 : 3 2 4 1 5 8 9
Perbandingan 4 : 2 3 1 4 5 8 9
Perbandingan 5 : 2 1 3 4 5 8 9
Perbandingan 4 : 1 2 3 4 5 8 9
Data terurut : 1 2 3 4 5 8 9
Masalah:
Mengurutkan data yang di masukan oleh pengguna dan mengetahuai berapa kali perbandingan
dilakukan sehingga data terurut dengan benar.
Algoritma:
1. Buatlah sebuah larik, yang isinya di masukan oleh user secara acak
2. Bandingkan semua isi larik di mulai dari indek ke satu sampai ke n, letakkan yang paling
besar di sebelah kanan, untuk melihat perbandingan ini gunakan algoritma bubble sort
3. Urutkan hasil perbandingan dengan menggunakan algoritma insertion sort.
#include<stdio.h>
int input(int larik[30],int n)
{
printf("nInpu bilangan bulat:n");
int i=0;
for (;i<n;) {
printf("indeks ke-[%d]: ",i);
14. scanf("%d",&larik[i]);
i++;
}
}
void bubble_sort(int larik[], int n) {
int i, j, k, temp;
printf("nData tak terurut: ");
for (k = 0; k < n; k++) {
printf("%5d", larik[k]);
}
printf("n");
for (i = 1; i < n; i++) {
for (j = 0; j < n - 1; j++) {
if (larik[j] > larik[j + 1]) {
temp = larik[j];
larik[j] = larik[j + 1];
larik[j + 1] = temp;
}
}
printf("nperbandingan ke-%d : ", i);
for (k = 0; k < n; k++) {
printf("%5d", larik[k]);
}
}
15. }
void sort_insertion(int x[100])
{
int i,jum,n,j;
for(i=1;i<n;i++)
{
jum = x[i];
j=i-1;
while(jum<x[j] && j>=0)
{
x[j+1] = x[j];
j--;
}
x[j+1]=jum;
}
printf("nnData terurut: ");
for(i=0; i<n; i++)
printf("%dt",x[i]);
}
void main() {
int larik[30], n, i=0;
printf("nMasukkan banyak data :");
scanf("%d", &n);