第三次上机作业

#include
#include
using namespace std;
//编写顺序查找函数;
int fun(int a[], int n, int num) {
int i = 0;
for (; i < n; ++i) {
if (a[i] num)return(i+1);
}
}/该查找函数的主要方法是一个数组形参,
一个数值元素个数,一个要查找的元素
通过for循环找到那个元素,然后需要注意的是
最终找到的那个元素需要加上一,才是正确的顺序,因为数组的元素是从0开始排的
/
int ef(int a[], int low, int high,int key) {
int between = 0;
while (low <= high) {
between = (low + high) / 2;
if (key < a[between - 1]) { high = between; }
if (key > a[between - 1]) { low = between; }
if (key = a[between - 1]) { return between; }
}
}/二分法的主要思想是找到一个最大的,找到一个最小的,用一个变量赋为中间值
中间值与目标值比较,不断循环
/
bool sushu(int a) {
if (a
2) {return 1; }
for (int i = 2; i <= (a / 2 + 1); i++) {
if (a % i == 0) { return 0;}
if (i == a / 2 + 1) { return 1; }
}
}//输入一个数,判断是否为素数
//下面为冒泡排序
void sort(vector& c, int size) {
for (int i = 1; i < size; i++) {
for (int j = 0; j < size - 1; j++) {
if (c[j + 1] < c[j]) {
int t = c[j + 1];
c[j + 1] = c[j];
c[j] = t;
}
}
}
}
int main() {
int a[5] = { 19,67,24,11,17 }, b[5] = { 2,3,9,17,59 };
int* m = a; int* n = b;
cout << “a中17的序号为” << fun(m, 5, 17)<<endl;
cout << “b中的17序号为” << fun(n, 5, 17) << endl;//顺序查找
cout << “b中的17序号为” << ef(n, 1, 5,17)<<endl;//二分法
vectorvi;
for (int i = 0; i < 5; i++) {
if (sushu(a[i]) == 1) {
vi.push_back(a[i]);
}
if (sushu(b[i] == 1)) {
vi.push_back(b[i]);
}
}
sort(vi, vi.size());
for (int i = 0; i < vi.size()-1; i++) {
if (a[i] == a[i + 1]);//去除重复元素
}
for (int i = 0; i < vi.size();i++) {
cout << vi[i]<<" ";
}
return 0;
}
该题主要是以前的知识,参考了一下同学对策,和同学讨论了许久,终于把这道题做出来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值