// Her eleman, sıralı kısmın doğru yerine eklenir.
#include
void insertionSort(int dizi[], int n) {
int key, j;
for (int i = 1; i < n; i++) {
key = dizi[i]; // Yerleştirilecek eleman
j = i - 1;
// key'den büyük elemanlar sağa kaydırılır.
while (j >= 0 && dizi[j] > key) {
dizi[j + 1] = dizi[j];
j--;
}
dizi[j + 1] = key; // key uygun konuma yerleştirilir.
}
}
int main() {
int dizi[] = {12, 11, 13, 5, 6};
int n = sizeof(dizi) / sizeof(dizi[0]);
insertionSort(dizi, n);
printf("Sıralı dizi: ");
for (int i = 0; i < n; i++) {
printf("%d ", dizi[i]);
}
return 0;
}
3. Selection Sort (Seçme Sıralaması): Bu algoritma ile dizideki en küçük elemanı bulup sırasıyla yerleştirme.
// Bu program,
#include
void selectionSort(int dizi[], int n) {
int enKucuk, temp;
for (int i = 0; i < n - 1; i++) {
enKucuk = i;
for (int j = i + 1; j < n; j++) {
if (dizi[j] < dizi[enKucuk]) {
enKucuk = j;
}
}
// Bulunan en küçük eleman ile mevcut eleman yer değiştirir.
temp = dizi[enKucuk];
dizi[enKucuk] = dizi[i];
dizi[i] = temp;
}
}
int main() {
int dizi[] = {29, 10, 14, 37, 14};
int n = sizeof(dizi) / sizeof(dizi[0]);
selectionSort(dizi, n);
printf("Sıralı dizi: ");
for (int i = 0; i < n; i++) {
printf("%d ", dizi[i]);
}
return 0;
}
// Pivot eleman etrafında bölerek sıralama yapılır.
#include
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int dizi[], int low, int high) {
int pivot = dizi[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (dizi[j] < pivot) {
i++;
swap(&dizi[i], &dizi[j]);
}
}
swap(&dizi[i + 1], &dizi[high]);
return i + 1;
}
void quickSort(int dizi[], int low, int high) {
if (low < high) {
int pi = partition(dizi, low, high);
quickSort(dizi, low, pi - 1);
quickSort(dizi, pi + 1, high);
}
}
int main() {
int dizi[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(dizi) / sizeof(dizi[0]);
quickSort(dizi, 0, n - 1);
printf("Sıralı dizi: ");
for (int i = 0; i < n; i++) {
printf("%d ", dizi[i]);
}
return 0;
}
5. Linear Search (Doğrusal Arama): Linear Search algoritması ile dizi içinde arama yapma.
#include
int linearSearch(int dizi[], int n, int aranan) {
for (int i = 0; i < n; i++) {
if (dizi[i] == aranan)
return i; // aranan elemanın bulunduğu indeks
}
return -1; // eleman bulunamazsa -1 döner
}
int main() {
int dizi[] = {3, 4, 5, 6, 7};
int n = sizeof(dizi) / sizeof(dizi[0]);
int aranan = 6;
int indeks = linearSearch(dizi, n, aranan);
if (indeks != -1)
printf("Eleman indeks %d'de bulundu.\n", indeks);
else
printf("Eleman bulunamadı.\n");
return 0;
}
// Dizinin sıralı olması gerekmektedir.
#include
int binarySearch(int dizi[], int sol, int sag, int aranan) {
while (sol <= sag) {
int orta = sol + (sag - sol) / 2;
if (dizi[orta] == aranan)
return orta;
if (dizi[orta] < aranan)
sol = orta + 1;
else
sag = orta - 1;
}
return -1; // eleman bulunamadı
}
int main() {
int dizi[] = {2, 3, 4, 10, 40};
int n = sizeof(dizi) / sizeof(dizi[0]);
int aranan = 10;
int indeks = binarySearch(dizi, 0, n - 1, aranan);
if (indeks != -1)
printf("Eleman indeks %d'de bulundu.\n", indeks);
else
printf("Eleman bulunamadı.\n");
return 0;
}