Сортировка массива методом деления - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста с кодом---Сортировка массива методом диления, размер массива 7 направление сортировки по убыванию.

Решение задачи: «Сортировка массива методом деления»

textual
Листинг программы
  1. // ConsoleApplication22.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "targetver.h"
  6. #include "iostream"
  7. #include "cstdlib"
  8. #include <stdio.h>
  9. #include <tchar.h>
  10. #include <conio.h>
  11. #include <time.h>
  12.  
  13.  
  14.  
  15. #define n 10
  16. int main()
  17. {
  18.     setlocale(LC_ALL, "Russian");
  19.     int i = 0, a = 0, b = 0, k = 0;
  20.     int nums[n];
  21.     srand(time(NULL));
  22.  
  23.     for (i = 0; i < n; i++)
  24.     {
  25.         nums[i] = 0 + rand() % 11;
  26.         printf("%d ", nums[i]);
  27.  
  28.     }
  29.     printf("\n");
  30.     // сортировка
  31.     int countswap = 0; //счетчик обменов
  32.     int countcompare = 0; //счетчик сравнений
  33.    
  34.     for (i = 0; i < n; ++i)
  35.     {
  36.        
  37.         int temp = nums[i]; //текущая позиция
  38.         int left = 0; //левый край
  39.         int right = i; //правый край
  40.         while (left<right) //пока левый край меньше правого
  41.         {
  42.             int middle = (left + right) / 2; //находим середину
  43.             if (temp >= nums[middle]) //если элемент больше середины
  44.             {
  45.                 left = middle + 1; //левый край правее середины
  46.                
  47.             }
  48.             else
  49.                 right = middle; //иначе правый край равен середине
  50.             countcompare++;
  51.  
  52.         }
  53.         int j;
  54.         for (j = i; j > left; --j)
  55.         {
  56.             int k;
  57.             k = nums[j - 1];
  58.             nums[j - 1] = nums[j]; //обмен
  59.             nums[j] = k;
  60.             countswap++;
  61.         }
  62.     }
  63.     printf("\n");
  64.     printf("Количество сравнений: %d\n", countcompare);
  65.     printf("Количество обменов: %d\n", countswap);
  66.     //------------------------------------
  67.     printf("отсортированный\n");
  68.     for (i = 0; i < n; i++)
  69.         printf("%d ", nums[i]);
  70.  
  71.     getch();
  72. }

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


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

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

9   голосов , оценка 4.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы