Отсортировать массив чисел по возрастанию - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д