Сортировка вставками без использования индексирования - C (СИ)
Формулировка задачи:
Нужно отсортировать и вывести 2-х мерный масив 10х10 по убыванию не используя индексацию (через указатели).
Поиском нашел кучу вариантов через индексацию, но как их переделать под указатели?
Решение задачи: «Сортировка вставками без использования индексирования»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 #define M 10 void mySort(int* ); int main(void) { int i, j, arr[N][M]; srand(time(NULL)); for(i = 0; i < N; i++, putchar('\n')) for(j = 0; j < M; j++) printf("%3d", arr[i][j] = rand() % 99); putchar('\n'); mySort(arr[0]); return 0; } void mySort(int* p) { int *q, *m, *last = p + N * M, temp; for(q = p + 1; q < last; q++){ for(m = q; m > p && *(m - 1) < *m; m--){ temp = *(m - 1); *(m - 1) = *m; *m = temp; } } for(temp = 0; p < last; p++, temp++){ if(temp && !(temp % M)) putchar('\n'); printf("%3d", *p); } }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O, генерацией случайных чисел и временем
- Определяем массив размером NxM, где N=10, M=10
- Инициализируем элементы массива случайными числами от 0 до 99
- Выводим массив на экран
- Рекурсивно вызываем функцию сортировки mySort, передавая в нее указатель на первый элемент массива
- В функции mySort определяем указатели на текущий элемент, предыдущий элемент и последний элемент массива
- Используя два вложенных цикла, сортируем массив по возрастанию
- Выводим отсортированный массив на экран
- Возвращаем 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д