Я пишу код для сортировки массива с использованием пузырьковой сортировки, но он показывает ошибку, которую я не могу устранить.код:
#include<stdio.h>
void swap();
void bubbleSort();
void printArr();
void main()
{
int n, arr[20];
printf("\n Enter the number of elements: ");
scanf("%d",&n);
printf("\n Enter the elements: ");
for(int i = 0; i<= n-1; i++)
scanf("%d",&arr[n]);
bubbleSort(arr, n);
printArr(arr, n);
}
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubbleSort(int arr[], int size)
{
int a, b;
for(int i=0; i<=size-1; i++)
{
if(arr[a] > arr[b])
swap(arr[a],arr[b]);
}
}
void printArr(int arr[], int size)
{
int i;
printf("\n Sorted array: ");
for(i=0; i<=size-1; i++)
printf(" %d ", arr[i]);
}
когда я компилирую файл, он показывает два предупреждения вроде этого:
sort.c: в функции 'bubbleSort':
sort.c: 37: 21: предупреждение: при передаче аргумента 1 'swap' указатель получается из целого числа без преобразования [-Wint-преобразование]
swap(arr[a],arr[b]);
~~~^~~
sort.c: 20: 16: примечание: ожидается 'int *'но аргумент имеет тип' int '
void swap(int *a, int *b)
~~~~~^
sort.c: 37: 28: предупреждение: передача аргумента 2' swap 'делает указатель из целого числа без приведения [-Wint-преобразование]
swap(arr[a],arr[b]);
~~~^~~
sort.c: 20: 24: note: ожидаемое int *, но аргумент имеет тип int
void swap(int *a, int *b)
~~~~~^
, когда я запускаю программу, она принимает вводно после этого его показ segmentation fault (core dumped)
Спасибо за вашу помощь.