您的位置:首页 > 其它

常用算法积累

2016-03-04 14:04 183 查看
static int add(int n)
{
int sum = 0;
n && (sum = add(n - 1) + n);
return sum;
}

static void sort_q(int *a, int low, int high)
{
if (low >= high) {
return;
}
int value = a[low];
int leftIdx = low;
int rightIdx = high;
while (leftIdx < rightIdx) {
while (leftIdx < rightIdx && value <= a[rightIdx]) {
rightIdx--;
}
a[leftIdx] = a[rightIdx];

while (leftIdx < rightIdx && value >= a[leftIdx]) {
leftIdx++;
}
a[rightIdx] = a[leftIdx];
}

a[leftIdx] = value;
sort_q(a, low, leftIdx - 1);
sort_q(a, leftIdx + 1, high);
}

static int search_half(int *a, int len, int key)
{
int rst = -1;
int low = 0;
int high = len - 1;
int middle;
while (low <= high) {
middle = (high + low) / 2;
if (key == a[middle]) {
return middle;
} else if (key > a[middle]) {
low = middle + 1;
} else if (key < a[middle]) {
high = middle - 1;
}
}
return rst;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: