2020-04-18 14:29:38 +03:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#define TRUE 1
|
|
|
|
#define FALSE 0
|
|
|
|
|
|
|
|
void cocktailSort(int arr[], int size)
|
|
|
|
{
|
|
|
|
int i, changed = TRUE, temp, start = 0, end = size - 1;
|
|
|
|
|
|
|
|
while (changed)
|
|
|
|
{
|
|
|
|
changed = FALSE;
|
|
|
|
for (i=start; i<end; i++)
|
|
|
|
{
|
|
|
|
if (arr[i] > arr[i+1])
|
|
|
|
{
|
|
|
|
temp = arr[i];
|
|
|
|
arr[i] = arr[i+1];
|
|
|
|
arr[i+1] = temp;
|
|
|
|
changed = TRUE;
|
|
|
|
}
|
|
|
|
}
|
2020-04-18 14:33:31 +03:00
|
|
|
end--;
|
2020-04-18 14:29:38 +03:00
|
|
|
|
|
|
|
if (changed == FALSE)
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
changed = FALSE;
|
|
|
|
|
|
|
|
for (i=end-1; i>=start; i--)
|
|
|
|
{
|
|
|
|
if (arr[i+1] < arr[i])
|
|
|
|
{
|
|
|
|
temp = arr[i+1];
|
|
|
|
arr[i+1] = arr[i];
|
|
|
|
arr[i] = temp;
|
|
|
|
changed = TRUE;
|
|
|
|
}
|
|
|
|
}
|
2020-04-18 14:33:31 +03:00
|
|
|
start++;
|
2020-04-18 14:29:38 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
int i, n;
|
|
|
|
|
|
|
|
printf("Enter the size of the array: ");
|
|
|
|
scanf("%d", &n);
|
|
|
|
int* arr = (int*)malloc(sizeof(int) * n);
|
|
|
|
|
|
|
|
for (i = 0; i < n; i++)
|
|
|
|
{
|
|
|
|
printf("Number #%d: ", i + 1);
|
|
|
|
scanf("%d", &arr[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
printf("You entered: ");
|
|
|
|
for (i=0; i<n; i++)
|
|
|
|
{
|
|
|
|
printf("%d ", arr[i]);
|
|
|
|
}
|
|
|
|
cocktailSort(arr, n);
|
|
|
|
printf("\nSorted array: ");
|
|
|
|
for (i=0; i<n; i++)
|
|
|
|
{
|
|
|
|
printf("%d ", arr[i]);
|
|
|
|
}
|
|
|
|
printf("\n");
|
|
|
|
|
|
|
|
free(arr);
|
|
|
|
return 0;
|
|
|
|
}
|