кодесурса
«C

Упражнения на C: найдите минимальную длину подмассива, чтобы при сортировке этого массива весь массив был отсортирован

script1adsense2code
script1adsense3code

C Массив: упражнение-91 с раствором

Дан несортированный массив определенного размера. Напишите программу на C, чтобы найти минимальную длину подмассива, чтобы при сортировке этого массива весь массив был отсортирован.

Пример решения:

Код C:

#include<stdio.h> 
   
void findUnsortedSubArr (int arr1[], int arr_size) 
{ 
  int m = 0, en = arr_size-1, i, max, min;    
   
  for (m = 0; m < arr_size-1; m++) 
  { 
    if (arr1[m] > arr1[m+1]) 
      break; 
  } 
  if (m == arr_size-1) 
  { 
    printf("The given array is sorted."); 
    return; 
  } 
   
  for(en = arr_size - 1; en > 0; en--) 
  { 
    if(arr1[en] < arr1[en-1]) 
      break; 
  } 
   
  max = arr1[m]; min = arr1[m]; 
  for(i = m + 1; i <= en; i++) 
  { 
    if(arr1[i] > max) 
      max = arr1[i]; 
    if(arr1[i] < min) 
      min = arr1[i]; 
  } 
   
  for( i = 0; i < m; i++) 
  { 
    if(arr1[i] > min) 
    {   
      m = i; 
      break; 
    }       
  }  
   
  for( i = arr_size -1; i >= en+1; i--) 
  { 
    if(arr1[i] < max) 
    { 
      en = i; 
      break; 
    }  
  }   
  printf("The minimum length of unsorted subarray which makes the given array sorted ");
   printf("\nlies between the indeces %d and %d", m, en); 
  return; 
} 
   
int main() 
{ 
  int arr1[] = {10, 12, 15, 17, 28, 32, 42, 18, 56, 59, 67}; 
  int arr_size = sizeof(arr1)/sizeof(arr1[0]); 
  int i;
   //------------- print original array ------------------	
	printf("The given array is:  \n");
	for(i = 0; i < arr_size; i++)
		{
			printf("%d  ", arr1[i]);
		}
	printf("\n");
//-----------------------------------------------------------  
  findUnsortedSubArr(arr1, arr_size); 
  return 0; 
} 

Пример вывода:

 Данный массив:  
10 12 15 17 28 32 42 18 56 59 67  
Минимальная длина несортированного подмассива, который делает данный массив отсортированным 
лежит между индейцами 4 и 7

Блок - схема:

«Блок-схема:

Редактор кода программирования C:

Улучшите этот пример решения и опубликуйте свой код через Disqus.

Предыдущий: Задан массив размера n такой, что каждый элемент находится в диапазоне от 0 до n-1. Напишите программу на C, чтобы переставить данный массив так, чтобы arr [i] стал arr [arr [i]].
Далее: Напишите программу на C, которая проверяет, появляются ли элементы в несортированном массиве последовательно или нет.

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code