Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.98 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <time.h>
  4. #include <stdlib.h>
  5. #define SIZE 11
  6. void predSort(int A[], int i) {
  7.     int buffer, Amin = A[0], Amax = A[0], C = A[i], n = SIZE;
  8.     for (int k = 0; k < SIZE; k++) //поиск максимального и минимального элементов
  9.     {
  10.         if (Amax < A[k]) Amax = A[k];
  11.         if (Amin > A[k]) Amin = A[k];
  12.     }
  13.     for (int m = 0, j = ((A[i] - Amin)*n) / (Amax - Amin); j != i; m++)
  14.     {
  15.         j = ((C - Amin)*n) / (Amax - Amin); //номер места для перемещения элемента
  16.         buffer = A[j]; //правило "трех стаканов"...
  17.         A[j] = C;
  18.         C = buffer;
  19.     }
  20.     A[i] = C; //элементу с исходным индексом присваиваем последнюю замену
  21. }
  22. void sort(int A[], int n) {
  23.     int i, found;                                // Количество обменов
  24.     do {                                     // Повторять просмотр...
  25.         found = 0;
  26.         for (i = 0; i<n - 1; i++)
  27.             if (A[i] > A[i + 1]) {        // Сравнить соседей
  28.                 int cc = A[i]; A[i] = A[i + 1]; A[i + 1] = cc;
  29.                 found++;                        // Переставить соседей
  30.             }
  31.     } while (found != 0);
  32. }               //...пока есть перестановки
  33. int main(void) {
  34.     srand(time(0));
  35.     int A[SIZE], i0;
  36.     printf("Array: ");
  37.     for (int i = 0; i < SIZE; i++) {
  38.         A[i] = rand() % 100; //заполняем массив случайными числами
  39.         printf(" %d", A[i]); //выводим его
  40.     }
  41.     printf("\n");
  42.     printf("Enter index \n");
  43.     scanf("%d", &i0);
  44.     printf("Sorting... \n");
  45.     predSort(A, i0);  //выполняем предварительную сортировку и
  46.     printf("Pre-sorting: ");
  47.     for (int i = 0; i < SIZE; i++) {
  48.         printf("%d ", A[i]);
  49.     }
  50.     printf("\n");
  51.     sort(A, SIZE - 1);
  52.     printf("Result: ");
  53.     for (int i = 0; i < SIZE; i++) {
  54.         printf("%d ", A[i]);
  55.     }
  56.     getchar();
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement