mirror of
https://github.com/TheAlgorithms/C
synced 2024-11-28 16:23:10 +03:00
75 lines
1.4 KiB
C
75 lines
1.4 KiB
C
#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;
|
|
}
|
|
}
|
|
end--;
|
|
|
|
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;
|
|
}
|
|
}
|
|
start++;
|
|
}
|
|
}
|
|
|
|
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;
|
|
} |