Сделать массив упорядоченным, переместив элемент - 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;
}

Объяснение кода листинга программы

В данном коде реализуется функция сортировки массива методом пузырька.

  1. В функции ins() происходит сортировка массива arr по возрастанию.
  2. Переменная i используется как счётчик элементов массива.
  3. Переменная j используется для перемещения элементов в процессе сортировки.
  4. Переменная v используется как временное хранилище для элемента, который нужно переместить.
  5. Переменная n используется как размер массива.
  6. В функции main() создаётся массив Arr определённого размера.
  7. Выводится исходный массив на экран.
  8. Вызывается функция ins(), которая сортирует массив.
  9. Выводится отсортированный массив на экран.
  10. Выполняется команда system(PAUSE), предназначенная для приостановки работы программы до нажатия клавиши.
  11. Возвращается 0, что означает успешное окончание работы программы.

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы