Учитывая массив, я должен сортировать его таким образом, чтобы первым элементом было наименьшее значение, второй - самый большой, третий - второй наименьший элемент и скоро.Сортировка массива с альтернативными наименьшими наибольшими значениями
Но мой код просто печатает исходный массив, и я не могу понять, почему. Любой совет будет принят во внимание.
#include <stdio.h>
void swap(int m, int n);
int main()
{
int i,j,A[10],n;
printf ("enter the number of array elements\n");
scanf ("%d", &n);
for (i=0;i<n;i++){
scanf ("%d", &A[i]);
}
for (i=0;i<n;i++){
if (i%2 == 0){
for (j=i;j<n;j++){
if (A[j] < A[i]){
swap(A[i],A[j]);
}
}
}
else if (i%2 != 0){
for (j=i;j<n;j++){
if (A[j] > A[i]){
swap (A[i],A[j]);
}
}
}
}
for(i=0;i<n;i++){
printf ("%d\n", A[i]);
}
return 0;
}
void swap(int m, int n)
{
int temp;
temp = m;
m = n;
n = temp;
}
Если вы хотите встроенный обмен на месте, попробуйте следующее: 'A [i]^= A [j]^= A [i];' И вообще исключить функцию свопинга. Вы также можете использовать макрос для этой цели. – Quirk
'void swap (int A [], int i, int j);' также будет работать. Вызов с 'swap (A, i, j)'. – user3386109
@Quirk: Плохой совет. Использование функции для swap делает код более удобочитаемым, а xor-цепочка также менее интуитивно понятна и не дает каких-либо преимуществ в современном коде и, вероятно, менее эффективна с плохо оптимизирующим компилятором. – Olaf