Strlen adalah salah satu perintah dalam library string.h yang berfungsi untuk menghitung panjang suatu string.
strlen(string1);
string1: string yang panjangnya akan dihitung
Return value: panjang karakter dalam bentuk integer (int)
Hati-hati!
Apabila panjang stringnya 10, maka proses penghitungannya akan dilakukan 10 kali.
Apabila panjang stringnya 100 ribu, maka proses penghitungannya akan dilakukan 100 ribu kali.
Jadi, perintah ini kurang efektif untuk beberapa case terutama di looping (contoh case di bawah).
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char str1[50];
scanf("%[^\n]s", str1);
printf("%d", strlen(str1));
}
Contoh input:
pohon saya
Contoh output:
10
Contoh potongan kode yang tidak efektif:
int i;
for(i = 0; i < strlen(string1); i++)
{...}
Kode tersebut bisa diubah menjadi efektif:
int i, panjang = strlen(string1);
for(i = 0; i < panjang ; i++)
{...}
Sunday, November 29, 2015
Strtok
Strtok adalah salah satu perintah dalam library string.h yang berfungsi untuk memisahkan string dari karakter (huruf) tertentu.
strtok(string1, string2);
string1: berisi string asal yang akan dipisah.
string2: berisi karakter-karakter dalam bentuk string yang digunakan sebagai titik pemisahan.
Return value: string1 yang sudah dipisah dari string2 (disimpan dalam variabel pointer char/char *pch)
Variabel 'string1' diisi 'NULL' untuk pemanggilan selanjutnya.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
void main(){
char a[50], b[50];
char *pch;
scanf("%[^\n]s", a); getchar();
scanf("%[^\n]s", b);
pch = strtok(a, b);
while(pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, b);
}
}
Contoh test case:
.saya .!mahasiswa! angkatan.!.2014
. !
Contoh output:
saya
mahasiswa
angkatan
2014
strtok(string1, string2);
string1: berisi string asal yang akan dipisah.
string2: berisi karakter-karakter dalam bentuk string yang digunakan sebagai titik pemisahan.
Return value: string1 yang sudah dipisah dari string2 (disimpan dalam variabel pointer char/char *pch)
Variabel 'string1' diisi 'NULL' untuk pemanggilan selanjutnya.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
void main(){
char a[50], b[50];
char *pch;
scanf("%[^\n]s", a); getchar();
scanf("%[^\n]s", b);
pch = strtok(a, b);
while(pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, b);
}
}
Contoh test case:
.saya .!mahasiswa! angkatan.!.2014
. !
Contoh output:
saya
mahasiswa
angkatan
2014
Bubble Sort
Bubble Sort adalah salah satu teknik mengurutkan data.
Kelebihan: Algoritmanya paling sederhana
Kekurangan: Proses pengurutannya lambat
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Bubble_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ // Input jumlah test case
int N; scanf("%d", &N);
// Input Data
int arr[N], i;
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
// Bubble Sort
int j, tmp, fl;
for(i = 0;i < N;i++)
{
fl = 1;
for(j = N-1;j >= i;j--)
if(arr[j - 1] > arr[j])
{
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
fl = 0;
}
if(fl == 1) break;
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Kelebihan: Algoritmanya paling sederhana
Kekurangan: Proses pengurutannya lambat
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Bubble_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ // Input jumlah test case
int N; scanf("%d", &N);
// Input Data
int arr[N], i;
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
// Bubble Sort
int j, tmp, fl;
for(i = 0;i < N;i++)
{
fl = 1;
for(j = N-1;j >= i;j--)
if(arr[j - 1] > arr[j])
{
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
fl = 0;
}
if(fl == 1) break;
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Selection Sort
Selection Sort adalah salah satu teknik mengurutkan data.
Kelebihan: Algoritmanya cukup sederhana dan mudah diimplementasikan
Kekurangan: Tidak efektif jika mengurutkan data yang banyak
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Selection_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int arr[N];
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
//Selection Sort
int j, akhir = N-1, indeks, tmp;
for(i = 0;i < akhir;i++)
{
indeks = i;
for(j = i+1;j < N;j++)
if(arr[indeks] > arr[j])
indeks = j;
if(indeks != i) // Switch data
{
tmp = arr[i];
arr[i] = arr[indeks];
arr[indeks] = tmp;
}
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Kelebihan: Algoritmanya cukup sederhana dan mudah diimplementasikan
Kekurangan: Tidak efektif jika mengurutkan data yang banyak
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Selection_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int arr[N];
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
//Selection Sort
int j, akhir = N-1, indeks, tmp;
for(i = 0;i < akhir;i++)
{
indeks = i;
for(j = i+1;j < N;j++)
if(arr[indeks] > arr[j])
indeks = j;
if(indeks != i) // Switch data
{
tmp = arr[i];
arr[i] = arr[indeks];
arr[indeks] = tmp;
}
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Insertion Sort
Insertion Sort adalah salah satu teknik mengurutkan data.
Kelebihan: Cepat pada data yang sebagian besar sudah terurut, codenya cukup singkat, dan stabil
Kekurangan: Tidak efektif (lambat) jika datanya banyak dan terurut secara terbalik (worst case)
Kompleksitas
Worst case/Average: O(n^2)
Best case (data sudah terurut): O(n)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Insertion_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int ar[N];
for(i = 0;i < N;i++)
scanf("%d", &ar[i]);
//Insertion Sort
int tmp, j;
for(i = 1;i < N;i++)
{
tmp = ar[i];
j = i - 1;
while((ar[j] > tmp) && (j > -1))
{
ar[j + 1] = ar[j];
j--;
}
ar[j + 1] = tmp;
}
// Output
printf("%d", ar[0]);
for(i = 1;i < N;i++)
printf(" %d", ar[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Kelebihan: Cepat pada data yang sebagian besar sudah terurut, codenya cukup singkat, dan stabil
Kekurangan: Tidak efektif (lambat) jika datanya banyak dan terurut secara terbalik (worst case)
Kompleksitas
Worst case/Average: O(n^2)
Best case (data sudah terurut): O(n)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Insertion_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int ar[N];
for(i = 0;i < N;i++)
scanf("%d", &ar[i]);
//Insertion Sort
int tmp, j;
for(i = 1;i < N;i++)
{
tmp = ar[i];
j = i - 1;
while((ar[j] > tmp) && (j > -1))
{
ar[j + 1] = ar[j];
j--;
}
ar[j + 1] = tmp;
}
// Output
printf("%d", ar[0]);
for(i = 1;i < N;i++)
printf(" %d", ar[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Subscribe to:
Posts (Atom)