Отсортировать массив и вывести на экран - C (СИ)
Формулировка задачи:
массив 20 чисел массив вводить рандомом отсортировать массив и вывести на экран
Решение задачи: «Отсортировать массив и вывести на экран»
textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include<stdlib.h>
void Sort(int n, int * Arr);
int main()
{
srand(time(0));
int n=100000;
int * Arr = new int[n]; //(int*) malloc (100001);
for(int i = 0;i < n;++i){
Arr[i] = rand()%1000;
printf("%d ",Arr[i]);
}
printf("\n");
Sort(n,Arr);
for(int i = 0;i < n;++i) printf("%d ",Arr[i]);
//getchar();
return 0;
}
void Sort(int n, int * Arr)
{
int t;
for(int i = 0;i < n-1;){
if(Arr[i] > Arr[i+1]){
t = Arr[i];
Arr[i] = Arr[i+1];
Arr[i+1] = t;
i = 0;
continue;
}
++i;
}
}
Объяснение кода листинга программы
В данном коде реализована сортировка массива методом сортировки вставками.
- В функции main() инициализируется генератор случайных чисел, а также выделяется память под массив Arr (размер n).
- Затем в цикле заполняется массив Arr случайными числами от 0 до 999.
- После заполнения массива его сортируют с помощью функции Sort().
- В функции Sort() инициализируется переменная t, которая будет использоваться как временная для обмена значениями.
- Внешний цикл for сортировки, который выполняется до n-1 итераций (так как на последней итерации все элементы уже будут упорядочены).
- На каждой итерации внутреннего цикла проверяется, больше ли текущий элемент Arr[i] чем следующий за ним Arr[i+1]. Если это так, то значения временной переменной t и Arr[i] меняются местами с Arr[i+1].
- После каждой итерации внутреннего цикла значение i сбрасывается в 0, чтобы можно было начать следующую итерацию внешнего цикла.
- В конце функции main() массив Arr выводится на экран.