void q_sort(int head, int tail) {//クイックソートの実装 int middle; if (head > tail) return; middle = partiton(head, tail); q_sort(head, middle - 1); q_sort(middle + 1, tail); }
void quicksort(int a[],int low,int high) { int s; if(low<=high) { s=partiton(a,low,s-1); quicksort(a,s+1,high); } }
// 完成对[L, R)区间的Fano编码, 我们将编码前缀放在C中并逐步变更, 不需要作为参数来传递. void Fano_Coding(size_t L, size_t R) { if (R > L + 1) { // 区间中至少有两个元素才进行编码. 此外, 该调用可保证区间非空. size_t S = partiton(L, R); // 注意赋值次序, C[L]的变更最后才能进行. C[S] = C[L] + "1"; // 先进行右半部分的前缀变更操作. C[L] = C[L] + "0"; // 再进行左半部分的前缀变更操作. Fano_Coding(L, S); Fano_Coding(S, R); } }