Сортировка на С линейным выбором и подсчётом - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <time.h> int k=0; int c=0; // число сравнений const int m = 10; // Формирует массив случайными числами. void FillArray1 (int *array, int n) { int i; for (i=0; i<n; i++) array[i]=rand()%1000; } //Сортировка void sort(int *a, int *b, int n) { int i, j; i=0; for(i; i<n; i++) { for(j; j<(i-1); j++) // текущий элемент сравнивается со всеми элементами, стоящими до него { if(a[j] < a[i]) k++; } for(j=(i+1); j<n; j++) // текущий элемент сравнивается со всеми элементами ниже его { if(a[j] < a[i]) k++; } b[k] = a[i]; } } //Вывод массива void print (int *array, int n) { int i; for (i=0; i<(n-1); i++) printf ("%i, ", array[i]); if (i=n) printf ("%i", array[i]); printf ("\n"); } int main() { int array[m]; int tmp[m]; FillArray1 (array, m); printf ("До сортировки: "); print (array, m); printf ("\n"); sort (array, tmp, m); printf ("После сортировки: "); print (tmp, m); return 0; }
Решение задачи: «Сортировка на С линейным выбором и подсчётом»
textual
Листинг программы
#include <stdio.h> #include <time.h> #include <iostream> int k=0; int c=0; // число сравнений const int m = 10; // Формирует массив случайными числами. void FillArray1 (int *array, int n) { int i; for (i=0; i<n; i++) array[i]=std::rand()%1000; } //Сортировка void sort(int *a, int *b, int n) { int i, j; for(i=0; i<n; i++) { k = 0; //!!!!!! for(j=0; j<i; j++) // текущий элемент сравнивается со всеми элементами, стоящими до него { if(a[j] <= a[i]) k++; // c++; } for(j=(i+1); j<n; j++) // текущий элемент сравнивается со всеми элементами ниже его { if(a[j] < a[i]) //я же написал, только в одном случае k++; // c++; } b[k] = a[i]; } } //Вывод массива void print (int *array, int n) { int i; for (i=0; i<(n - 1); i++) printf ("%i, ", array[i]); printf ("%i", array[i]); printf ("\n"); } int main() { int array[m]; int tmp[m]; // time_t st_t, end_t; // начальное, конечное время // int lt; FillArray1 (array, m); printf ("До сортировки: "); print (array, m); printf ("\n"); // st_t=time (NULL); sort (array, tmp, m); // end_t = time(NULL); // lt=(end_t - st_t); printf ("После сортировки: "); print (tmp, m); // printf ("\n%i сравнений\n%i секунд\n", c, lt); return 0; }
Объяснение кода листинга программы
- FillArray1 функция для заполнения массива случайными числами.
- sort функция для сортировки массива методом
линейного выбора
. - print функция для вывода массива на экран.
- main функция, в которой происходит заполнение массива, сортировка и вывод отсортированного массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д