шейкер сортировка массива слов

Аватар пользователя merkul40
ср, 04/04/2018 - 21:34 -- merkul40
//произвести сортировку массива названий городов
// используя функцию strcmp 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define		SIZE	20
 
char shakerSort(char *[], int);
void printing(char *[]);
 
int main ()
{
	char *cityNames[] = {"Брест", "Жабинка", "Кобрин", "Каменец", 
		"Береза", "Белоозерск", "Ивацевичи", "Барановичи", "Пружаны",
		"Ружаны", "Ганцевичи", "Пинск", "Столин", "Иваново", 
		"Антополь", "Дрогичин", "Лунинец", "Микашевичи", 
		"Давид-городок", "\n"};//20 элементов
 
	//printf("\n%ld\n",sizeof(cityNames));
 
	shakerSort(cityNames, SIZE);
 
	printing(cityNames);
	}
 
char shakerSort(char *CN[], int size)
{
	char * tmp;
	int left = 0, right = (size - 2);
 
	while (left < right)
	{
 
		for (int i = left; i < right; i++)//слева направо
		{
			if (strncmp(CN[i], CN[i + 1], 4) > 0)
			{
				tmp = CN[i];
				CN[i] = CN[i + 1];
				CN[i + 1] = tmp;
				}
			} 
		right--;
 
		////////////////////////////////////////////////////////////
		for (int j = right; j > left; j--)
		{
			if (strncmp(CN[j], CN[j - 1], 4) < 0)
			{
				tmp = CN[j];
				CN[j] = CN[j - 1];
				CN[j - 1] = tmp;
				}
			}
		left++;
 
		}
	}
 
void printing(char *CN[])
{
	int i = 0;
	while (CN [i] != "\n")
	{
		printf("\n%d\t%s\n", i, CN[i]);
		i++;
		}
	}