Sorting algorithms/Cocktail sort: Difference between revisions

→‎{{header|C}}: C code now looks more like C rather than like pascal, java or anything else.
m (range optimisation missing)
(→‎{{header|C}}: C code now looks more like C rather than like pascal, java or anything else.)
Line 334:
<lang c>#include <stdio.h>
 
// can be any swap function. This swap is optimized for numbers.
#define try_swap { if (a[i] < a[i - 1])\
void swap(int *x, int *y) {
{ t = a[i]; a[i] = a[i - 1]; a[i - 1] = t; t = 0;} }
if(x == y)
 
return;
void cocktailsort(int *a, size_t len)
*x ^= *y;
{
size_t*y i^= *x;
int t*x ^= 0*y;
}
while (!t) {
void cocktailsort(int *a, size_t lenn) {
for (i = 1, t = 1; i < len; i++) try_swap;
while (!t1) {
if (t) break;
// packing two similar loops into one
for (i = len - 1, t = 1; i; i--) try_swap;
char flag;
size_t start[2] = {1, n - 1},
end[2] = {n, 0},
inc[2] = {1, -1};
for (iint = 1, tit = 10; iit < len2; i++it) try_swap;{
flag = 1;
for(int i = start[it]; i != end[it]; i += inc[it])
if(a[i - 1] > a[i]) {
swap(a + i - 1, a + i);
flag = 0;
}
if(flag)
return;
}
}
}
 
int main(void) {
int xa[] = { 5, -1, 101, -4, 0, 1, 8, 6, 2, 3 };
{
size_t i, lenn = sizeof(xa)/sizeof(xa[0]);
int x[] = { 5, -1, 101, -4, 0, 1, 8, 6, 2, 3 };
size_t i, len = sizeof(x)/sizeof(x[0]);
 
cocktailsort(xa, lenn);
for (size_t i = 0; i < lenn; i++i)
printf("%d\n ", xa[i]);
return 0;
}</lang>
 
'''Output''':
 
<lang>-4 -1 0 1 2 3 5 6 8 101</lang>
 
=={{header|C++}}==
Anonymous user