来自于《算法:C 语言实现》
1 // 顺序搜索算法
2
3 #include <stdio.h>
4
5 int search(int a[], int v, int l, int r)
6 {
7 int i;
8 for (i = l; i <= r; ++i)
9 {
10 if (v == a[i])
11 {
12 return i;
13 }
14 }
15 return -1;
16 }
17
18 int main()
19 {
20 int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
21 int i, pos;
22 for (i = 10; i >= -1; --i)
23 {
24 printf("%d\n", search(a, i, 0, 9));
25 }
26 return 0;
27 }
1 // 二分搜索算法
2
3 #include <stdio.h>
4
5 int search(int a[], int v, int l, int r)
6 {
7 int m;
8 while (r >= l)
9 {
10 m = (l + r) / 2;
11 if (v == a[m])
12 {
13 return m;
14 }
15 if (v > a[m])
16 {
17 l = m + 1;
18 }
19 else
20 {
21 r = m - 1;
22 }
23 }
24 return -1;
25 }
26
27 int main()
28 {
29 int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
30 int i, pos;
31 for (i = 10; i >= -1; --i)
32 {
33 printf("%d\n", search(a, i, 0, 9));
34 }
35 return 0;
36 }
posted on 2011-04-20 17:12
unixfy 阅读(107)
评论(0) 编辑 收藏 引用