[text] Praktikum Sorting

Viewer

copydownloadembedprintName: Praktikum Sorting
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <time.h>
  5.  
  6. #define MAX 10
  7.  
  8. int Data[MAX];
  9.  
  10. // Prosedur menukar data
  11. void Tukar(int *a, int *b) {
  12.     int temp = *a;
  13.     *a = *b;
  14.     *b = temp;
  15. }
  16.  
  17. // Prosedur pengurutan metode gelembung
  18. void BubbleSort() {
  19.     int i, j;
  20.     for (i = 1; i < MAX - 1; i++)
  21.         for (j = MAX - 1; j >= i; j--)
  22.             if (Data[j - 1] > Data[j])
  23.                 Tukar(&Data[j - 1], &Data[j]);
  24. }
  25.  
  26. // Prosedur pengurutan metode Shell
  27. void ShellSort() {
  28.     int Jarak, i, j;
  29.     bool Sudah;
  30.     Jarak = MAX;
  31.     while (Jarak > 1) {
  32.         Jarak = Jarak / 2;
  33.         Sudah = false;
  34.         while (!Sudah) {
  35.             Sudah = true;
  36.             for (j = 0; j < MAX - Jarak; j++) {
  37.                 i = j + Jarak;
  38.                 if (Data[j] > Data[i]) {
  39.                     Tukar(&Data[j], &Data[i]);
  40.                     Sudah = false;
  41.                 }
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47. void StraightInsertSort() {
  48.     int i, j, x;
  49.     for (i = 1; i < MAX; i++) {
  50.         x = Data[i];
  51.         j = i - 1;
  52.         while (x < Data[j]) {
  53.             Data[j + 1] = Data[j];
  54.             j--;
  55.         }
  56.         Data[j + 1] = x;
  57.     }
  58. }
  59.  
  60. void BinaryInsertSort() {
  61.     int i, j, l, r, m, x;
  62.     for (i = 1; i < MAX; i++) {
  63.         x = Data[i];
  64.         l = 0;
  65.         r = i - 1;
  66.         while (l <= r) {
  67.             m = (l + r) / 2;
  68.             if (x < Data[m])
  69.                 r = m - 1;
  70.             else
  71.                 l = m + 1;
  72.         }
  73.         for (j = i - 1; j >= l; j--)
  74.             Data[j + 1] = Data[j];
  75.         Data[l] = x;
  76.     }
  77. }
  78.  
  79. void SelectionSort() {
  80.     int i, j, k;
  81.     for (i = 0; i < MAX - 1; i++) {
  82.         k = i;
  83.         for (j = i + 1; j < MAX; j++)
  84.             if (Data[k] > Data[j])
  85.                 k = j;
  86.         Tukar(&Data[i], &Data[k]);
  87.     }
  88. }
  89.  
  90. void printArray() {
  91.     int i;
  92.     for (i = 0; i < MAX; i++)
  93.         printf("%d ", Data[i]);
  94.     printf("\n");
  95. }
  96.  
  97. int main() {
  98.     int choice, i;
  99.  
  100.     // Mengisi array dengan nilai yang diinputkan oleh pengguna
  101.     printf("Masukkan %d nilai awal (dipisahkan dengan spasi): ", MAX);
  102.     for (i = 0; i < MAX; i++)
  103.         scanf("%d", &Data[i]);
  104.  
  105.     printf("Array awal: ");
  106.     printArray();
  107.  
  108.     do {
  109.         printf("\nMenu Sorting:\n");
  110.         printf("1. Bubble Sort\n");
  111.         printf("2. Shell Sort\n");
  112.         printf("3. Straight Insertion Sort\n");
  113.         printf("4. Binary Insertion Sort\n");
  114.         printf("5. Selection Sort\n");
  115.         printf("6. Keluar\n");
  116.         printf("Pilihan Anda: ");
  117.         scanf("%d", &choice);
  118.  
  119.         switch (choice) {
  120.             case 1:
  121.                 BubbleSort();
  122.                 printf("Hasil Bubble Sort: ");
  123.                 printArray();z
  124.                 break;
  125.             case 2:
  126.                 ShellSort();
  127.                 printf("Hasil Shell Sort: ");
  128.                 printArray();
  129.                 break;
  130.             case 3:
  131.                 StraightInsertSort();
  132.                 printf("Hasil Straight Insertion Sort: ");
  133.                 printArray();
  134.                 break;
  135.             case 4:
  136.                 BinaryInsertSort();
  137.                 printf("Hasil Binary Insertion Sort: ");
  138.                 printArray();
  139.                 break;
  140.             case 5:
  141.                 SelectionSort();
  142.                 printf("Hasil Selection Sort: ");
  143.                 printArray();
  144.                 break;
  145.             case 6:
  146.                 printf("Terima kasih!\n");
  147.                 break;
  148.             default:
  149.                 printf("Pilihan tidak valid!\n");
  150.                 break;
  151.         }
  152.     } while (choice != 6);
  153.  
  154.     return 0;
  155. }

Editor

You can edit this paste and save as new:


File Description
  • Praktikum Sorting
  • Paste Code
  • 02 May-2024
  • 3.67 Kb
You can Share it: