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--;
        }
    }
    
    
  • 相关阅读:
    oracle表分区管理partition
    winfrom 界面编辑之疑难杂症
    resx文件引用
    mysql 数据库名含“-”
    KNN算法之图像处理二
    KNN算法之图像处理一
    DCOM初步窥探二
    dcom初步窥探一
    .net组件和com组件&托管代码和非托管代码
    c# apache服务器请求得到数据(初级)
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7620403.html
Copyright © 2011-2022 走看看