Lines Matching refs:array

64 uprv_stableBinarySearch(char *array, int32_t limit, void *item, int32_t itemSize,
69 /* Binary search until we get down to a tiny sub-array. */
72 int32_t diff=cmp(context, item, array+i*itemSize);
94 /* Linear search over the remaining tiny sub-array. */
96 int32_t diff=cmp(context, item, array+start*itemSize);
108 doInsertionSort(char *array, int32_t length, int32_t itemSize,
113 char *item=array+j*itemSize;
114 int32_t insertionPoint=uprv_stableBinarySearch(array, j, item, itemSize, cmp, context);
121 char *dest=array+insertionPoint*itemSize;
122 uprv_memcpy(pv, item, itemSize); /* v=array[j] */
124 uprv_memcpy(dest, pv, itemSize); /* array[insertionPoint]=v */
130 insertionSort(char *array, int32_t length, int32_t itemSize,
146 doInsertionSort(array, length, itemSize, cmp, context, pv);
157 * It recurses for the smaller sub-array to shorten the recursion depth,
158 * and loops for the larger sub-array.
168 subQuickSort(char *array, int32_t start, int32_t limit, int32_t itemSize,
176 doInsertionSort(array+start*itemSize, limit-start, itemSize, cmp, context, px);
183 /* x=array[middle] */
184 uprv_memcpy(px, array+((start+limit)/2)*itemSize, itemSize);
187 while(/* array[left]<x */
188 cmp(context, array+left*itemSize, px)<0
192 while(/* x<array[right-1] */
193 cmp(context, px, array+(right-1)*itemSize)<0
198 /* swap array[left] and array[right-1] via w; ++left; --right */
203 uprv_memcpy(pw, array+left*itemSize, itemSize);
204 uprv_memcpy(array+left*itemSize, array+right*itemSize, itemSize);
205 uprv_memcpy(array+right*itemSize, pw, itemSize);
216 subQuickSort(array, start, right, itemSize, cmp, context, px, pw);
224 subQuickSort(array, left, limit, itemSize, cmp, context, px, pw);
234 quickSort(char *array, int32_t length, int32_t itemSize,
250 subQuickSort(array, 0, length, itemSize,
262 * cast the array to char * so that array+i*itemSize works.
265 uprv_sortArray(void *array, int32_t length, int32_t itemSize,
271 if((length>0 && array==NULL) || length<0 || itemSize<=0 || cmp==NULL) {
279 insertionSort((char *)array, length, itemSize, cmp, context, pErrorCode);
281 quickSort((char *)array, length, itemSize, cmp, context, pErrorCode);