// return 0 exist , insert fail. 1 insert success intinsertData(int *datas, int curDataCount, int newData) { int min = 0, max = curDataCount - 1; int middle, i;
// find position while (min < max) { middle = (max - min)/2 + min; if (datas[middle] < newData) { min = middle + 1; } elseif (datas[middle] == newData) { return0; } else { max = middle - 1; } }
// insert if (min >= curDataCount) { datas[curDataCount] = newData; } else { if (datas[min] < newData) { min++; }
for (i = count; i > min; i--) { datas[i] = datas[i - 1]; } datas[min] = newData; }
return1; }
穷举二维数组的排列组合
有一个二维数组 a[n][m], 0 < n, m <= 8.每行的有效元素个数不固定,且单行内的元素不重复。 要求从每一行取一个有效数字,组成一个一维数组result[n]。 计算出所有可能的组合。