线性查找(算法导论中文第三版2.1-3)
2016-11-16 15:15 yojiaku 阅读(447) 评论(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
浙公网安备 33010602011771号