Пример #1
0
 /*Function to implement the combsort*/
 void combsort(int a[], int aSize)
 {
     int gap = aSize;
     int temp, i;
     for (;;)
     {
         gap = newgap(gap);
         int swapped = 0;
         for (i = 0; i < aSize - gap; i++) 
         {
             int j = i + gap;
             if (a[i] > a[j])
             {
                 temp = a[i];
                 a[i] = a[j];
                 a[j] = temp;
                 swapped  =  1;
             }
         }
         if (gap  ==  1 && !swapped)
             break;
     }
 }
Пример #2
0
void qsort(void *base, size_t nmemb, size_t size,
	   int (*compar) (const void *, const void *))
{
	size_t gap = nmemb;
	size_t i, j;
	char *p1, *p2;
	int swapped;

	if (!nmemb)
		return;

	do {
		gap = newgap(gap);
		swapped = 0;

		for (i = 0, p1 = base; i < nmemb - gap; i++, p1 += size) {
			j = i + gap;
			if (compar(p1, p2 = (char *)base + j * size) > 0) {
				memswap(p1, p2, size);
				swapped = 1;
			}
		}
	} while (gap > 1 || swapped);
}