Отсортировать массив чисел по возрастанию - 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);
}