Другие языки программирования и технологии

помощь по си! сортировка одномерного массива!

> AspiD
> if ( n = 1 ) return;
> int min = 0;
> int b = 0;
...
> sort(a[ i ] ,n-1)
Какая, блядь, жестокая поебень рахманинова.

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

void sort(int *a, int n) {
    int mc = 0, c, t;
    if (n == 1) return;
    for (c = 1; c < n; ++c) if (a[mc] > a[c]) mc = c;
    if (mc != 0) {
        t = a[0];
        a[0] = a[mc];
        a[mc] = t;
    }
    sort(a + 1, n - 1);   
}

#define N 10

main() {
    int a[N], c;
    srand(time(NULL));
    printf("array: ");
    for (c = 0; c < N; ++c) printf(" %d", a[c] = rand() % 100);
    sort(a, N);
    printf("\nresult:");
    for (c = 0; c < N; ++c) printf(" %d", a[c]);
   
}
Андрей Миловидов
Андрей Миловидов
63 251
Лучший ответ
Метод пузырька самый простой.
Не-не-не, сам пиши прожку.
рекурсивную - первое что на ум приходит - половинное деление. пизжу, называется он подругому =))
сортировка слиянием

если хочешь именно свою, то при каждом вызове находи первый элемент. сначала вызов для (a,n), в ней будешь вызывать каждый раз уже (a[ i ], n-1) пока n не станет равной единице.
как-то так
void Sort ( int *a, int &n)
{
if ( n = 1 ) return;
int min = 0;
int b = 0;
for (int j = 0; j < n; j++)
{
if (a[j] > a[min])
{
b = a[j];
a[j] = a[min];
a[min] = b;
}
}
}
sort(a[ i ] ,n-1)
}

Похожие вопросы