Esempio n. 1
0
void quicksort_rec(void* base,int size, int beg,int end)
{
	void* piv;
	int y,z;

	if(beg < end)
	{
		piv = base;
		y = beg;
		z = end;

		while(y < z)
		{
			while((y <= end) && (base+(y*size) <= piv))
				y++;

			while((z >= beg) && (base+(z*size) > piv))
				z--;

			if(y < z)
				swapElem(base+(y*size), base+(z*size));
		}

		swapElem(base+(beg*size),base+(z*size));

		quicksort_rec(base, size, beg, z-1);
		quicksort_rec(base, size, z+1, end);
	}
}
Esempio n. 2
0
File: qs.c Progetto: zz-mars/zz-repo
int quick_partition(int a[], int s, int e) {
	if (s >= e) {
		return -1;
	}
	int pivot = s;
	int swap_idx = s + 1;
	int idx;
	for(idx=s+1;idx<e;idx++) {
		if(a[idx] < a[pivot]) {
			swapElem(a, idx, swap_idx);
			swap_idx++;
		}
	}
	swap_idx--;
	swapElem(a, pivot, swap_idx);
	printf("swap_idx => %d\n", swap_idx);
	return swap_idx;
}