Са
Сашка

Сортировка массива. Язык С (Подробнее внутри)

Дан символьный массив типа char, данные в который извлекаются из текстового файла in.txt . Прошу объяснить мне как отсортировать массив. на основе кода. Да я знаю что есть два типа символьных массива signed(диапазон от -128 до 127 и unsigned(диапазон от 0 до 256 символов) . Но как организовать сортировку данных - понятия не имею. Прошу объяснить на исходном коде :


#include

#include

#include

#include

int main (int argc, char *argv[]){

setlocale(LC_ALL, "RUS");

char *in = "in.txt";

char *out = "out.txt";

char *new_string;

unsigned char arr[20];



int a;

int i=0;

int i_arr[5];

FILE *file;

FILE *file2;

file = fopen (in,"r") ;

file2 = fopen (out,"r+w");

if (file == 0 ) {

printf ("\n");

printf ("Инициализируйте файл %s" , in) ;

printf ("\n");





}

if (file2 == 0 ) {

printf ("Инициализируйте файл %s",out);

printf ("\n");





}

printf ("\n");

printf ("Инициализация массива ...\n");

printf ("Получение входящих данных ...\n");

while (fgets(arr,sizeof(arr),file) ){

new_string = "";

printf ("\n");

printf ("Строка %d " , i++ ); printf ("инициализирована. "); printf ("Содержимое : "); printf ("%s%s\n",arr,new_string);

}

printf ("\n");

printf ("Сортировка ...\n");





printf ("=======");

printf ("\n");

printf ("Для того чтобы выйти, нажмите любую клавишу.. . ");

printf ("\n");

getch();

}

_____

Скрин с данными в файле in.txt,которые вносятся в массив .



P.S Язык СИ изучаю самостоятельно.

МК
Максим Кирюшин

#include
#define SIZE 26
void selection(char*);
void swap(char*, char*);
void print(char*);
int main(void) {
char alphabet[SIZE] = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm' };
print(alphabet);
selection(alphabet);
print(alphabet);
getchar();
}
void selection(char* _v) {
int n;
for (n = 0; n < SIZE - 1; ++n) {
int max = n, m;
for (m = n + 1; m < SIZE; ++m) if (_v[m] < _v[max]) max = m;
if (max != n) swap(&_v[n], &_v[max]);
}
}
void swap(char* _a, char* _b) {
char temp = *_a;
*_a = *_b;
*_b = temp;
}
void print(char* _v) {
int i = 0;
do printf("%c", _v[i]); while (++i < SIZE);
printf("\n");
}

sky_2088
sky_2088

char, signed char, unsigned char - для сортировки нет никакой разницы. Бери алгоритм пузырьковой сортировки (он простейший) и сортируй так же, как сортировал бы целые.
Например, функция сортировки строки a длиной n символов:
void sort(char *a, int n){
int i,j; char c; for(i=0;ia[j+1]){c=a[j]; a[j]=a[j+1]; a[j+1]=c;}}
Хорошее описание принципа пузырька есть, например, тут:
http://habrahabr.ru/post/204600/

Рамиль Алиев
Рамиль Алиев

Надо реализовать один из алгоритмов сортировки
http://ru.wikipedia.org/wiki/Алгоритм_сортировки

Похожие вопросы
Напишите, пожалуйста, программу сортировки массива.
Pascal. Сортировка массива символов
Как сделать автомат сортировку массива на java?
сортировка двухмерного массива методом вставки
Сортировка Массива
Язык СИ. Массивы Ребят, как на Си написать сортировку массива от меньшего к большему?
Java, быстрая сортировка массива объектов.
Сортировка массива на языке C# с использованием процедур.
Сортировка массива методом вставки
Сортировка массива вставкой.