zoukankan      html  css  js  c++  java
  • 顺序查找-顺序查找-带哨兵查找

    下面的顺序查找算法采用了倒序查找的方式, 以保持程序的一致性. 就是把数组下标为0的,
    元素空下来, 不存放具体的元素, 而是存放要查找的元素. 这样在查找的过程中, 采用倒序
    遍历的方式, 即从数组最后一个元素开始一直遍历到第0个数组元素.

    #include <stdio.h>
    #include <stdlib.h>
    
    void print (int arr[], int length);
    int orderSearch (int arr[], int val, int max);
    
    int main() {
        int i;
        int max = 21; // 数组最大容量
        int data[max];
        int search; // 要查找的值
        int pos; // 要查找的元素在数组中的位置
    
        // 为数组赋值max个范围在[1, 150]的随机数
        for (i=1; i<max; i++) {
            // 数组的下标0不用来存储数据
            data[i] = rand() % 150 + 1;
        }
        printf("清输入要查找的值, 取值范围是[1, 150]: 
    ");
        scanf("%d", &search);
        pos = orderSearch(data, search, max);
        if (pos) {
            printf("查找成功, %d %d
    ", pos, data[pos]);
        } else {
            printf("查找失败, 数组中没有这个元素
    ");
        }
    
        print(data, max);
    	return 0;
    }
    
    void print (int arr[], int length) {
        printf("
    ");
        printf("数组内的全部元素如下: 
    ");
        int i;
        for (i=0; i<length; i++) {
            printf("%d %d
    ", i, arr[i]);
        }
        printf("
    ");
    }
    
    // 参数: arr查找数组 val查找值 max数组容量
    int orderSearch (int arr[], int val, int max) {
        arr[0] = val;
        max--;
        while (max != -1) {
            if (arr[max] == val) {
                return max;
            }
            max--;
        }
    }
    
    
  • 相关阅读:
    第13周作业集
    软件工程结课作业
    第13次作业--邮箱的正则表达式
    第12次作业--你的生日
    第11次作业
    第10次作业
    找回感觉的练习
    第16周作业
    第15周作业
    第14周作业
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7620403.html
Copyright © 2011-2022 走看看