Найти ошибку (сортировка выбором) - C (СИ)
Формулировка задачи:
Просьба помочь найти ошибку.
// Дано: Сортировка выбором. Выбирается минимальный элемент в массиве и запоминается.
//Затем удаляется, а все последующие за ним элементы сдвигаются на один влево.
//Сам элемент заносится на освободившуюся последнюю позицию.
Не могу занести элемент на освободившуюся последнюю позицию.
#include <stdio.h>
int sort(int A[], int n) //А-массив, n-размерность массива
{
for(int i=n-1; i>=0; i--)
{
int min=A[0]; //переменная для хранения сортируемого элемента массива
int j;
int tmp=0;
for(j=1; j<=i; j++) //поиск наименьшего
if(A[j]<=min)
{
min=A[j];tmp=j;
}
for(int k=tmp; k<n-1; k++) //сдвиг элементов массива
A[k]=A[k+1];
A[n-1]=min;// минимальный элемент -> в конец массива
}
return 0;
}
void main(void)
{
int A[]={5,6,4,56,1,1,1,4,4,99,55,55,32,0,2};
int n=15;
sort(A, n);
for(int i=0; i<n; i++)
printf(" A[%d]=%d\n", i, A[i]);
}Решение задачи: «Найти ошибку (сортировка выбором)»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
int sort(int A[], int n) //А-массив, n-размерность массива
{
for(int i=n-1; i>=0; i--)
{
int min=A[0]; //переменная для хранения сортируемого элемента массива
int j;
int tmp=0;
for(j=1; j<=i; j++) //поиск наименьшего
if(A[j]<=min)
{
min=A[j];tmp=j;
}
for(int k=tmp; k<n-1; k++) //сдвиг элементов массива
A[k]=A[k+1];
A[n-1]=min;// минимальный элемент -> в конец массива
}
return 0;
}
int main(void)
{
int A[]={5,6,4,56,1,1,1,4,4,99,55,55,32,0,2};
int n=15;
sort(A, n);
for(int i=0; i<n; i++)
printf(" A[%d]=%d\n", i, A[i]);
getch();
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию sort для сортировки массива выбором
- Создаем массив A и переменную n для определения размерности массива
- Запускаем функцию sort для сортировки массива
- Выводим отсортированный массив на экран
- Завершаем программу