Сортировка на С линейным выбором и подсчётом - 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;
}

Объяснение кода листинга программы

  1. FillArray1 функция для заполнения массива случайными числами.
  2. sort функция для сортировки массива методом линейного выбора.
  3. print функция для вывода массива на экран.
  4. main функция, в которой происходит заполнение массива, сортировка и вывод отсортированного массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы