Сортировка масива с использованием указателей - C (СИ)
Формулировка задачи:
Здраствуйте, я не могу розобраться з сортировкой массива через указатели. У меня вроде он сортируеться, но максимальное число куда то пропадает, а в место него какой то мусор стоит -858993460 и тд. Помогоите плиз.
Вод мой код:
#include<windows.h>
#include<stdio.h>
#include <time.h>
#include <stdlib.h>
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int A[3][3] = { {4,7,1}, {1,2,8}, {3,5,6} };
int* begin_a;
int* end_a;
int i = 0;
printf("Не сортований масив\n");
// вивід не сортованого масива
while (i < 3) {
for (begin_a = (int *)A + (i * 3) + 0, end_a = (int *)A + (i * 3) + 3; begin_a != end_a; begin_a++) {
printf("%d ", *begin_a);
}
i++;
}
i = 0;
printf("\n\n");
//сортування бульбашкою
int temp, N = 0;
while (N < 10) {
for (begin_a = (int*)A+0, end_a = (int*)A + 9; begin_a < end_a; begin_a++) {
if (*begin_a > *(begin_a + 1)) {
temp = *begin_a;
*begin_a = *(begin_a + 1);
*(begin_a + 1) = temp;
}
}
N++;
}
// вивід сортованого маисву
i = 0;
printf("\nВідсортований масив\n");
while (i < 3) {
for (begin_a = (int *)A + (i * 3) + 0, end_a = (int *)A + (i * 3) + 3; begin_a != end_a; begin_a++) {
printf("%d ", *begin_a);
}
i++;
}
getchar();
}Решение задачи: «Сортировка масива с использованием указателей»
textual
Листинг программы
for (begin_a = (int*)A+0, end_a = (int*)A + 8; begin_a < end_a; begin_a++) {
Объяснение кода листинга программы
- Инициализация начального и конечного указателей для первого вложенного цикла:
begin_aиend_a. - Условие цикла while, которое выполняется до тех пор, пока
begin_aменьшеend_a. - В каждой итерации внутреннего цикла происходит сравнение двух соседних элементов массива
Aи их последующая перестановка в нужном порядке. - Значение
A[i]присваивается переменнойtemp, которая затем присваиваетсяA[i+1]. - Переход к следующей итерации внутреннего цикла.
- Переход к следующей итерации внешнего цикла.