Сортировка массива методом деления - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д