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); } }
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; }