Упорядочить в порядке возрастания первые N элементов массива - C (СИ)
Формулировка задачи:
Задано массив чисел Q(y). Определить количество N отрицательных элементов массива и упорядочить в порядке возрастания первые N элементов массива. Если невозможно сделать это, выдать сообщение
Решение задачи: «Упорядочить в порядке возрастания первые N элементов массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int arr[] = {5,4,3,2,1,-6, -5,-4, 12 ,8};
void show(const int* arr, int arr_lenght){
printf("array = ");
for ( int i = 0; i < arr_lenght ; i++){
printf("%d ",arr[i]);
}
printf("\n");
}
int count_negative(const int* arr, int arr_lenght){
int number_of_negative = 0;
for ( int i = 0; i < arr_lenght ; i++){
if (arr[i] < 0) {
number_of_negative += 1;
}
//number_of_negative += (arr[i] < 0) ? 1 : 0 ; // it's better way;
}
printf("Count of negative = %d.\n", number_of_negative);
return number_of_negative;
}
int compare (const void * a, const void * b){
//need for qsort.
return ( *(int*)a - *(int*)b );
}
void partial_sort_for_int_array(int* arr, int num){
// from stdlib.h
qsort(arr, num, sizeof(int), compare);
}
int main(void)
{
int len = sizeof(arr)/sizeof(int);
show(arr, len);
int number_of_negative = count_negative(arr, len);
partial_sort_for_int_array(arr, number_of_negative);
show(arr,len);
return 0;
}
Объяснение кода листинга программы
- В начале кода объявляется массив arr[] с шестью положительными и двумя отрицательными числами.
- Затем определены функции: — show(const int arr, int arr_lenght) — для вывода элементов массива в консоль. — count_negative(const int arr, int arr_lenght) — для подсчета отрицательных чисел в массиве. — compare(const void a, const void b) — для сортировки массива по возрастанию (для использования в функции qsort из библиотеки stdlib.h). — partial_sort_for_int_array(int* arr, int num) — для частичной сортировки массива по возрастанию (также использует функцию qsort).
- В функции main() сначала вычисляется длина массива len, затем выводится содержимое массива с помощью функции show().
- После этого вызывается функция count_negative(), которая подсчитывает количество отрицательных чисел в массиве, и сохраняет это значение в переменной number_of_negative.
- Затем вызывается функция partial_sort_for_int_array(), которая сортирует первые number_of_negative элементов массива по возрастанию.
- Наконец, выводится отсортированный массив с помощью функции show().
- Программа завершается возвратом значения 0 из функции main(), что означает успешное выполнение программы.