Составить из значений двух массивов третий, также упорядоченный по возрастанию - C (СИ)
Формулировка задачи:
7. Заданы два упорядоченных по возрастанию массива. Соста*вить из их значений третий, также упорядоченный по возрастанию (слияние).
Решение задачи: «Составить из значений двух массивов третий, также упорядоченный по возрастанию»
textual
Листинг программы
int i=0,j=0,k=0; do { if (a[i]<=b[j]) //проверяем, какой из элементов меньше (i, j, k первоначально нули). если элементы равны - условие тоже выполняется, просто при следующем проходе цикла b[j] станет меньше a[i] и они оба запишутся в c[k] { c[k]=a[i]; //если a[i] меньше, то c[k] принимает значение a[i], затем увеличиваем k и i k++; i++; } else //в противном случае записываем b[j] в c[k] и увеличиваем j и k { c[k]=b[j]; j++;k++; while ((k<m)&&(k<n))// выполняется до тех пор, пока k меньше меньшего из n и m. затем один из массивов кончается и дальнейшие значения c[k] просто берутся из оставшегося массива if (n>m)// если кончился массив b, то значения берутся из а do { c[k]=a[i]; k++;i++; } while (k<i+j) else // иначе значения берутся из b do { c[k]=b[j]; j++;k++; } while (k<i+j)
Объяснение кода листинга программы
В данном коде происходит сортировка двух массивов методом сортировки пузырьком. Список действий:
- Задаются начальные значения переменных i=0, j=0, k=0.
- В цикле do-while происходит сравнение и перестановка элементов массивов a и b, если a[i] меньше или равно b[j]. Если условие выполняется, то значение a[i] записывается в массив c, затем увеличиваются значения i и k. Если условие не выполняется, то значение b[j] записывается в массив c, затем увеличиваются значения j и k.
- После окончания цикла do-while, выполняется цикл while, который выполняется до тех пор, пока значение k меньше меньшего из n и m. Если значение n больше m, то значения берутся из массива a. Если значение n меньше или равно m, то значения берутся из массива b.
- Если значение n больше m, то в цикле do-while значения a[i] записываются в массив c, пока значение k не станет больше i+j.
- Если значение n меньше или равно m, то в цикле do-while значения b[j] записываются в массив c, пока значение k не станет больше i+j.
- После окончания цикла while, значения массива c считаются отсортированными по возрастанию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д