Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. //int Swap(int x,int y){
  7. //   int tmp = x;
  8. //   x=y;
  9. //   y=tmp;
  10. //}
  11.  
  12. int main(){
  13.     int N=0, data[N], opsi, tmp, key, l=0, r, f=0;;
  14. //    char lanjut;
  15. //    do{
  16. //      cout << "masukkan angka : "; cin >> data[N];
  17. //      cout << "lanjut?[y/n] "; cin >> lanjut;
  18. //      N++;
  19. //    }while(lanjut == 'y' || lanjut == 'Y');
  20.    cout << "batas : ";
  21.    cin >> N;
  22.    for(int i=0;i<N;i++){
  23.       cout << "data ke " << i << " : ";
  24.       cin >> data[i];
  25.    }
  26.     system("clear");
  27.     cout << "data : ";
  28.     for(int i=0; i < N; i++){
  29.       cout<<data[i]<<" ";
  30.     }
  31.     cout << "\nKeyword : "; cin >> key;
  32.     cout << "1. Bubble Sort\n2. Insertion Sort\n3. Selection Sort\n4. Shell Sort\n5. Quick Sort\n";
  33.     cout << "masukkan pilihan : ";cin>>opsi;
  34.     switch(opsi){
  35.       case 1 :
  36.          for(int i=0; i <= N-1; i++){
  37.             for(int j=0; j < N-i-1; j++){
  38.                if(data[j] > data[j+1]){
  39.                   tmp = data[j];
  40.                   data[j] = data[j+1];
  41.                   data[j+1] = tmp;
  42.                }
  43.             }
  44.          }
  45.          break;
  46.       case 2 :
  47.          for(int i=0; i < N; i++){
  48.                int j=i-1;
  49.                int tmp=data[i];
  50.             while(j>=0 && data[j] > tmp){
  51.                data[j+1] = data[j];
  52.                j--;
  53.             }
  54.          data[j+1] = tmp;
  55.          }
  56.          break;
  57.       case 3 :
  58.          int mins;
  59.          for(int i=0; i < N; i++){
  60.          mins=i;
  61.             for(int j = i+1 ; j < N; j++){
  62.                if(data[j]<data[mins]){
  63.                   mins = j;
  64.                   tmp = data[mins];
  65.                   data[mins] = data[i];
  66.                   data[i] = tmp;
  67.                }
  68.             }
  69.          }
  70.          break;
  71.       case 4 :
  72.          for (int gap=N/2; gap>0; gap/=2){
  73.             for (int i=gap; i<N; i+=1){
  74.                   int tmp = data[i];
  75.                   int j;
  76.                for (j=i; j>=gap && data[j-gap] > tmp; j-=gap)
  77.                   data[j] = data[j-gap];
  78.                   data[j] = tmp;
  79.                }
  80.             }
  81.          break;
  82.       case 5 :
  83.          int tmp, pivot=data[(0+N)/2];
  84.          int x=0, y=N;
  85.          while(x<y){
  86.             while(data[x]<pivot)
  87.                x++;
  88.             while(data[y]>pivot)
  89.                y--;
  90.             if(x<y)
  91.             if (x <= y) {
  92.                   tmp = data[x];
  93.                   data[x] = data[y];
  94.                   data[y] = tmp;
  95.                   x++;
  96.                   y--;
  97.             }
  98.          }
  99.          break;
  100. //      case 6 :
  101. //         int awal=0,akhir=N,tengah;
  102. //         int i,j,k;
  103. //         if(awal<akhir){
  104. //            tengah = awal+(akhir-awal)/2;
  105. //            int n1 = tengah-awal+1;
  106. //            int n2 = akhir-tengah;
  107. //            int Awal[n1], Akhir[n2];
  108. //            for (int i=0; i<n1; i++)
  109. //                  Awal[i] = data[awal+i];
  110. //            for (int j=0; j<n2; j++)
  111. //                  Akhir[j] = arr[m + 1+ j];
  112. //                  i = 0, j = 0, k = l;
  113. //                while (i<n1 && j<n2){
  114. //                    if (Awal[i] <= Akhir[j]){
  115. //                        data[k] = Awal[i];
  116. //                        i++;
  117. //                    }
  118. //                    else{
  119. //                        data[k] = Akhir[j];
  120. //                        j++;
  121. //                    }
  122. //                    k++;
  123. //                }
  124. //                while (i<n1){
  125. //                    data[k] = Awal[i];
  126. //                    i++;
  127. //                    k++;
  128. //                }
  129. //                while (j<n2){
  130. //                    data[k] = Akhir[j];
  131. //                    j++;
  132. //                    k++;
  133. //                }
  134. //         }
  135. //         break;
  136.     }
  137.          for(int n=0;n<N;n++){
  138.             cout << data[n] << " ";
  139.          }
  140.    int awal = 0;
  141.     int akhir = N;
  142.     int tengah = (awal+akhir)/2;
  143.     while (awal <= akhir){
  144.         if(data[tengah] < key)
  145.         {
  146.             awal = tengah + 1;
  147.  
  148.         }
  149.         else if(data[tengah] == key){
  150.             cout << "\nData " << key <<" di temukan di index "<< tengah+1 <<"\n";
  151.             break;
  152.         }
  153.         else{
  154.              akhir = tengah - 1;
  155.         }
  156.         tengah = (awal + akhir)/2;
  157.     }
  158.     if(awal > akhir){
  159.         cout << "\nData "<< key <<" tidak di temukan.";
  160.     }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement