Упорядочить массив по убыванию - C (СИ)
Формулировка задачи:
Каким способом? Объясните, пожалуйста, ничего не получается=(
#include <stdio.h>
#include <stdlib.h>
#define n 5
#define m 5
int main()
{
int a[n],i;
int *pa;
pa=a;
for(i=0;i<n;i++,pa++)
{
scanf("%d",pa);
}
pa-=n;
printf("1 massiv ");
for(i=0;i<n;i++,pa++)
{
printf("%d ",*pа);
}
printf("\n");
getch();
}Решение задачи: «Упорядочить массив по убыванию»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
#define N 5
int main ()
{
int a[N];
int *p=&a[0];
int i, k,j;
printf("Vedite a:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
k=*(p+i);
*(p+i)=*(p+j);
*(p+j)=k;
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
system("pause");
return 0;
}
Объяснение кода листинга программы
В этом коде происходит сортировка массива методом пузырька.
- Создаётся массив типа int a[N] и указатель на первый элемент этого массива p = &a[0].
- Далее, с помощью двух вложенных циклов, происходит сравнение каждого элемента массива с каждым другим элементом и, в случае если текущий элемент больше следующего, производится их перестановка местами.
- После сортировки элементов массива, они выводятся на экран с помощью цикла for и функции printf.
- В конце программы, с помощью функции system(
pause), программа приостанавливается до нажатия клавиши. Следует отметить, что данный код может работать некорректно, если массив уже отсортирован по возрастанию или если в массиве будут повторяющиеся значения. Также, данный код может работать некорректно, если количество элементов в массиве будет меньше или равно 1.