Сортировка массива методом деления - C (СИ)
Формулировка задачи:
Помогите пожалуйста с кодом---Сортировка массива методом диления, размер массива 7 направление сортировки по убыванию.
Решение задачи: «Сортировка массива методом деления»
textual
Листинг программы
- // ConsoleApplication22.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include "targetver.h"
- #include "iostream"
- #include "cstdlib"
- #include <stdio.h>
- #include <tchar.h>
- #include <conio.h>
- #include <time.h>
- #define n 10
- int main()
- {
- setlocale(LC_ALL, "Russian");
- int i = 0, a = 0, b = 0, k = 0;
- int nums[n];
- srand(time(NULL));
- for (i = 0; i < n; i++)
- {
- nums[i] = 0 + rand() % 11;
- printf("%d ", nums[i]);
- }
- printf("\n");
- // сортировка
- int countswap = 0; //счетчик обменов
- int countcompare = 0; //счетчик сравнений
- for (i = 0; i < n; ++i)
- {
- int temp = nums[i]; //текущая позиция
- int left = 0; //левый край
- int right = i; //правый край
- while (left<right) //пока левый край меньше правого
- {
- int middle = (left + right) / 2; //находим середину
- if (temp >= nums[middle]) //если элемент больше середины
- {
- left = middle + 1; //левый край правее середины
- }
- else
- right = middle; //иначе правый край равен середине
- countcompare++;
- }
- int j;
- for (j = i; j > left; --j)
- {
- int k;
- k = nums[j - 1];
- nums[j - 1] = nums[j]; //обмен
- nums[j] = k;
- countswap++;
- }
- }
- printf("\n");
- printf("Количество сравнений: %d\n", countcompare);
- printf("Количество обменов: %d\n", countswap);
- //------------------------------------
- printf("отсортированный\n");
- for (i = 0; i < n; i++)
- printf("%d ", nums[i]);
- getch();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д