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