Отсортировать массив чисел по возрастанию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Подскажите, почему не работает.
#include <stdio.h>
#include <string.h>
 
void sortch(int *a)
{
    int i;
    for (i =0; i !='\0'; i++)
    {
 
    if (a[i] > a[i+1])
    {
            int j;
            a[i] = j;
            a[i] = a[i+1];
            a[i+1] = j;
            
            i--;
        }
    }
}
 
int main()
{
    int masch[] = {1, 3, 5, 2, 4};
    sortch(masch);
    printf("Otsortirovannie chisla\n %d .\n", masch);
    return 0;
}

Решение задачи: «Отсортировать массив чисел по возрастанию»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void swap(int * a, int * b) {
    if ( a != b ) {
        int i = *a;
        *a = *b;
        *b = i;
    }
}
 
void krqsort(int * arr, size_t count) {
    if ( count > 1 ) {
        int * ptr, * last;
            
        swap(arr, arr + count / 2);
        for ( last = arr, ptr = arr + 1; ptr - arr < count; ++ptr )
            if ( *ptr <= *arr )
                swap(++last, ptr);
        swap(arr, last);
        
        krqsort(arr, last - arr);
        krqsort(last, count - (last - arr));
    }
}
 
void buble_sort(int * arr, size_t count) {
    size_t i, j;
    for ( i = 0; i < count - 1; ++i )
        for ( j = i + 1; j < count; ++j )
            if ( arr[j] < arr[i] )
                swap(&arr[i], &arr[j]);
}
 
void fill(int * arr, size_t count) {
    while ( count-- )
        *arr++ = rand() % 10;
}
 
void dump(const int * arr, size_t count) {
    while ( count-- )
        printf("%d%c", *arr++, ( count ) ? ' ' : '\n');
}
 
int main(void) {
    int * arr;
    size_t count;
    
    srand(time(NULL));
    
    while ( printf("Number of elements: ") && scanf("%u", &count) == 1 && count ) {
        if ( ! ( arr = malloc(sizeof(int) * count) ) ) {
            perror("malloc");
            exit(1);
        }
        
        fill(arr, count);
        printf("Unsorted:\n");
        dump(arr, count);
        //krqsort(arr, count);
        buble_sort(arr, count);
        printf("Sorted:\n");
        dump(arr, count);
        
        free(arr);
    }
    
    exit(0);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.6 из 5
Похожие ответы