Сделать массив упорядоченным, переместив элемент - C (СИ)
Формулировка задачи:
Дан массив размера N, все элементы которого, кроме одного, упорядоченные по убыванию. Сделать массив упорядоченным, переместив элемент, нарушающий упорядоченность, на новую позицию.
Решение задачи: «Сделать массив упорядоченным, переместив элемент»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
void ins(int *arr, int n)
{
int i,j,v;
for (i=1; i<n; i++)
if (arr[i] < arr[i-1])
{
v=arr[i];
j=i-1;
while ((j>=0) && (arr[j]>v)) arr[j+1]=arr[j--];
arr[j+1]=v;
}
}
int main(int argc, char *argv[])
{
int Arr[]={1,2,12,16,18,19,7,20,21,25};
int n=sizeof(Arr)/sizeof(int);
int i;
for (i=0; i<n; i++) printf("%d ",Arr[i]);
printf("\n");
ins(Arr,n);
for (i=0; i<n; i++) printf("%d ",Arr[i]);
printf("\n");
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
В данном коде реализуется функция сортировки массива методом пузырька.
- В функции ins() происходит сортировка массива arr по возрастанию.
- Переменная i используется как счётчик элементов массива.
- Переменная j используется для перемещения элементов в процессе сортировки.
- Переменная v используется как временное хранилище для элемента, который нужно переместить.
- Переменная n используется как размер массива.
- В функции main() создаётся массив Arr определённого размера.
- Выводится исходный массив на экран.
- Вызывается функция ins(), которая сортирует массив.
- Выводится отсортированный массив на экран.
- Выполняется команда system(
PAUSE), предназначенная для приостановки работы программы до нажатия клавиши. - Возвращается 0, что означает успешное окончание работы программы.