《数据结构、算法与应用》8.(顺序查找数组中第一个出现指定元素的位置)

最近在读《数据结构、算法与应用》这本书,把书上的习题总结一下,用自己的方法来实现了这些题,可能在效率,编码等方面存在着很多的问题,也可能是错误的实现,如果大家在看这本书的时候有更优更好的方法来实现,还请大家多多留言交流多多指正,谢谢

8. 从左至右检查数组a[0:n-1]中的元素,以查找雨x相等的那些元素。如果找到一个元素与x相等,则函数返回x第一次出现所在的位置。如果在数组中没有找到这样的元素,函数则返回-1。

//
//  main.cpp
//  Test_08
//
//  Created by cc on 14-6-1.
//  Copyright (c) 2014年 cc. All rights reserved.
//

/*
 8.  从左至右检查数组a[0:n-1]中的元素,以查找雨x相等的那些元素。如果找到一个元素与x相等,则函数返回x第一次出现所在的位置。
     如果在数组中没有找到这样的元素,函数则返回-1.
 */

#include <iostream>

using namespace std;

template <class T>
int sequentialSearch(T arr[], const T& x, int n);

int main(int argc, const char* argv[]) {

    const int n = 10;
    int arr[n] = {0, 1, 2, 3, 4, 6, 5, 5, 6, 7};
    int x = 5;

    int index = sequentialSearch(arr, x, n);
    cout << x << "第一次出现的位置:" << index << endl;

    x = 111;
    index = sequentialSearch(arr, x, n);
    cout << x << "第一次出现的位置:" << index << endl;

    return 0;
}

/**
 *	@brief	按顺序查找数组中与x相等的元素,并返回其第一次出现的位置
 *
 *	@param 	arr[]    数组
 *	@param 	x        元素x
 *	@param 	n        数组的大小
 *
 *	@return	true: 初始化成功 false: 初始化失败
 */
template <class T>
int sequentialSearch(T arr[], const T& x, int n) {
    for (int i = 0; i < n; i++) {
        if (x == arr[i]) {
            return i;
        }
    }
    return -1;
}

&#8;输出结果如下图:

本文由CC原创总结,如需转载请注明出处:http://blog.csdn.net/oktears/article/details/27966399

《数据结构、算法与应用》8.(顺序查找数组中第一个出现指定元素的位置),布布扣,bubuko.com

时间: 05-30

《数据结构、算法与应用》8.(顺序查找数组中第一个出现指定元素的位置)的相关文章

查找数组中第i小的元素

查找并输出数组中第i小的元素,这样的题目我们可以先对数组进行排序,然后输出相对应的第i小的元素:还有另外一种方法,一种解决选择问题的分治算法,该算法是以快速排序算法为模型的,与快速排序一样,我们仍然将输入数组进行划分,但与快速排序不同的是,快速排序会递归处理划分的两边,而该选择方法select只处理划分的一边.这一差异会在性能分析中体现出来:快速排序的期望运行时间为O(nlog(n)),而select的选择期望运行时间是O(n). 1.对数组进行排序,然后输入第i小的元素,这里排序算法用的是插入

查找数组中出现次数最多的元素(一次遍历)

采用阵地攻守的思想:第一个数字作为第一个士兵,守阵地:count = 1:遇到相同元素,count++;遇到不相同元素,即为敌人,同归于尽,count--:当遇到count为0的情况,又以新的i值作为守阵地的士兵,继续下去,到最后还留在阵地上的士兵,有可能是主元素.再加一次循环,记录这个士兵的个数看是否大于数组一般即可. 代码如下 public int Solution(int [] array) { int len = array.length; int count=1;//初始化第一个士兵为

解析、查找数组中重复出现的元素(Java)

 解析.查找数组中重复出现的元素,Java实现. <数据结构与算法分析:解析.查找数组中重复出现的元素> 问题描述:一个结构化数据,假设事先按照某种顺序排好序(比如升序)的一个数组中,无规则.重复出现若干次某个相同元素,形如有序数组data: data = {  "A", "A", "B", "C", "C", "D", "D" , "D&q

算法——蛮力法之顺序查找和蛮力字符串匹配

接着昨天的选择排序和冒泡排序之后,今天来实现一下顺序查找和蛮力字符串匹配两个算法. 顺序查找就是将给定的查找键和列表周玲的每个元素进行比较,直到找到一个匹配成功的元素返回该元素下标,查找成功,或者查找整个列表二没有匹配元素,查找失败.这里记录一下限位器版顺序查找方法.限位器就是指将查找键添加到列表最后,这样在查找的过程中,不用再每次都判断是否到达列表尾部来判断查找是否失败,而是在查找结束后,判断匹配元素下标是否小于n(假设列表有n个元素)来判断查找是否成功.下面是限位器版顺序查找算法: 限位器版

小朋友学数据结构(5):顺序查找法

小朋友学数据结构(5):顺序查找法 查找是最常见的数据操作之一,也是数据结构的核心运算之一,其重要性不言而喻. 顺序查找是最简单的查找策略,对于小规模的数据,顺序查找是个不错的选择. (一)基本思想 从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败. 1 从表中的第一个元素开始,依次与关键字比较. 2 若某个元素匹配关键字,则查找成功. 3 若查找到最后一个元素还未匹配关键字,则查找失败. 1.png (二)时间复杂度 顺序查找平均关键字匹配次数为表长的一半,其时间复杂度为O(n).

经典算法详解(11)递归查找数组中的最大值

题目:编写一个程序,用递归的方法实现查找数组中的最大值. C++实现 1 #include<iostream> 2 3 using namespace std; 4 //第一种方法是常规方法,不是使用递归,首先将第一个元素的值赋值给max,然后遍历数组, 5 //当遇到超高max的值时将其赋值给max,最后就将得到最大值 6 int getMax_fir(int *arr,int n) { 7 int max = arr[0]; 8 for (int i = 1; i < n; i++)

查找数组中未出现的最小正整数

请设计一个高效算法,查找数组中未出现的最小正整数. 给定一个整数数组A和数组的大小n,请返回数组中未出现的最小正整数.保证数组大小小于等于500. 测试样例: [-1,2,3,4],4 返回:1 class ArrayMex { public: int findArrayMex(vector<int> A, int n) { // write code here // write code here sort(A.begin(),A.end()); //排序 if(A[0] > 1) r

JAVA基础(数组)数组排序和查找数组中是否还有某一个数

数组排序和数组中含有某一个数 import java.util.Arrays;class Demo4 { public static void main(String[] args) { //数组中的使用工具:Arrays int[] arr = {1,2,4,5}; //查找数组中是否还有某一个数 int num = 3; //有 : 对应索引位置 int result = Arrays.binarySearch(arr,num); System.out.println(result); //

【算法导论学习-015】数组中选择第i小元素(Selection in expected linear time)

1.算法思想 问题描述:从数组array中找出第i小的元素(要求array中没有重复元素的情况),这是个经典的"线性时间选择(Selection in expected linear time)"问题. 思路:算法导论215页9.2 Selection in expect linear time 2.java实现 思路:算法导论216页伪代码 /*期望为线性时间的选择算法,输入要求,array中没有重复的元素*/ public static int randomizedSelect(i