Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #define SIZE 11
- void predSort(int A[], int i) {
- int buffer, Amin = A[0], Amax = A[0], C = A[i], n = SIZE;
- for (int k = 0; k < SIZE; k++) //поиск максимального и минимального элементов
- {
- if (Amax < A[k]) Amax = A[k];
- if (Amin > A[k]) Amin = A[k];
- }
- for (int m = 0, j = ((A[i] - Amin)*n) / (Amax - Amin); j != i; m++)
- {
- j = ((C - Amin)*n) / (Amax - Amin); //номер места для перемещения элемента
- buffer = A[j]; //правило "трех стаканов"...
- A[j] = C;
- C = buffer;
- }
- A[i] = C; //элементу с исходным индексом присваиваем последнюю замену
- }
- void sort(int A[], int n) {
- int i, found; // Количество обменов
- do { // Повторять просмотр...
- found = 0;
- for (i = 0; i<n - 1; i++)
- if (A[i] > A[i + 1]) { // Сравнить соседей
- int cc = A[i]; A[i] = A[i + 1]; A[i + 1] = cc;
- found++; // Переставить соседей
- }
- } while (found != 0);
- } //...пока есть перестановки
- int main(void) {
- srand(time(0));
- int A[SIZE], i0;
- printf("Array: ");
- for (int i = 0; i < SIZE; i++) {
- A[i] = rand() % 100; //заполняем массив случайными числами
- printf(" %d", A[i]); //выводим его
- }
- printf("\n");
- printf("Enter index \n");
- scanf("%d", &i0);
- printf("Sorting... \n");
- predSort(A, i0); //выполняем предварительную сортировку и
- printf("Pre-sorting: ");
- for (int i = 0; i < SIZE; i++) {
- printf("%d ", A[i]);
- }
- printf("\n");
- sort(A, SIZE - 1);
- printf("Result: ");
- for (int i = 0; i < SIZE; i++) {
- printf("%d ", A[i]);
- }
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement