线性查找(算法导论中文第三版2.1-3)
2016-11-16 15:15 yojiaku 阅读(423) 评论(1) 编辑 收藏 举报线性查找
输入:n个数的一个序列A=<a1, a2, a3, …, an>和一个值v
输出:下标i使得v = A[i], 如果 v 不属于 A,则输出nil
伪代码:
for i=1 to n
if A[i] = v
return I
end if
end for
return nil
C++实现:[偷了个小懒^_^,就在前面的插入排序里面写了一下,很拙劣…]
//============================================================================ // Name : Insertion.cpp // Author : yojiaku // Version : // Copyright : 算法导论-插入排序简单实现(只有mian函数)-按非升序排列-use vector-线性查找 // Description : Hello World in C++, Ansi-style //============================================================================ #include<iostream> #include<vector> usingnamespace std; using std::vector; intmain() { //intnum[] = {8, 3, 8, 7, 0}; vector<int> num; cout << "请输入大于或等于0的数字进行排序,输出小于0的数字默认输入结束" << endl; int temp; while(cin >> temp && temp >= 0){ num.push_back(temp); } int length = num.size(); cout << "一共有" << length << "个数字进行比较" << endl; int key(0); int i(0); for(int j = 1; j < length; j++){ key = num[j]; // insert num[j] into the sorted num[0, ..., j-1] i = j - 1; while(i >= 0 && num[i] > key){ num[i+1] = num[i]; i = i -1; } num[i+1] = key; } for(int j = 0; j < length; j++){ cout << num[j] << " "; } cout << endl; int findNum(0); cout << "请输入要查找的数:" << endl; cin >> findNum; int flag(0); for(int j = 0; j < length; j++){ if(num[j] == findNum){ cout << "找到啦!在第" << j << "个位置" << endl; flag = 1; } } if(flag == 0){ cout << "nil" << endl; } return 0; }
运行结果:
请输入大于或等于0的数字进行排序,输出小于0的数字默认输入结束
12 34 12 78 0 21 34 4545 -2
一共有8个数字进行比较
0 12 12 21 34 34 78 4545
请输入要查找的数:
1
nil
总结:仍然是最简单的挨个查找。
真的不知道这么简单的东西,感觉硬是被自己写得好复杂^3^
15:14:42
编译器:eclipse
操作系统:ubuntu