数组(3)

发布于:2025-09-06 ⋅ 阅读:(15) ⋅ 点赞:(0)

12.数组练习4 反转数组

#include <stdio.h>
void printArr(int arr[], int len);
int main()
{
    /*
                  需求:键盘录入5个数据并存入数组,完成一下要求
                                1.遍历数组 2.反转数组3.再次遍历
        */
    //1.定义数组
    int arr[5] = { 0 };
    int len = sizeof(arr) / sizeof(int);
    //2.键盘录入数据
    for (int i = 0; i < len; i++)
    {
        printf("请录入第%d个元素\n", i + 1);
        scanf_s("%d", &arr[i]);
    }
    //3.遍历数组
    printArr(arr, len);

    //4.反转数组
    int i = 0;
    int j = len - 1;
    while (i < j)
    {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] =  temp;

        i++;
        j--;
    }
    //5.遍历数组
    printArr(arr, len);
    return 0;
}
void printArr(int arr[], int len)
{
    for (int i = 0; i < len; i++)
    {
        printf("%d\n", arr[i]);
    }
}

13.数组练习5 打乱数组中的数据

#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    /*
        需求:定义一个数组,存入1-5,要求打乱数组中所有数据的顺序        
        */

    //1.定义数组
    int arr[] = { 1,2,3,4,5, };
    int len = sizeof(arr) / sizeof(int);

    //2.遍历数组,得到每一个元素,让这个元素跟随机索引处的元素进行交换

    //设置种子
    srand(time(NULL));
    for (int i = 0; i < len; i++)
    {
        //获取一个随机索引
        //0~4
        int index = rand() % len;
        //拿着i指向的元素,跟index指向的元素进行交换
        int temp = arr[i];
        arr[i] = arr[index];
        arr[index] = temp;

    }


    //3.遍历数组
    for (int i = 0; i < len; i++)
    {
        printf("%d\n", arr[i]);

    }
}

14.数组常见算法1 基本查找/顺序查找

小程序

#include <stdio.h>
int order(int arr[], int len, int num);


int main()
{
    /*
            需求:数组的基本查找
                核心思路:就是从数组的0索引开始,依次往后查找
                         如果找到了,就会返回数据对应的索引
                                 如果没有找到,就会返回-1
        */

    //1.定义数组
    int arr[] = { 11,22,55,77,44 };
    int len = sizeof(arr) / sizeof(int);
    //2.定义一个变量表示要查找的数据
    int num = 55;

    //3.调用函数查找数据
    int index =order(arr, len,num);

    //4.输出索引
    printf("%d\n", index);



    return 0;





}


//作用:查找数组中的数据
//返回值:数据所在的索引
int order(int arr[], int len, int num)
{
    for (int i = 0; i < len; i++)
    {
        if (arr[i] == num)
        {
            return i;
        }

    }
    return -1;



}

笔记

15.数组常见算法2 二分查找/折半查找

小程序

#include <stdio.h>
int binarySearch(int arr[], int len, int num);
int main()
{
    /*
            需求:数组的二分查找
                在7,23,79,81,103,127,131,147 中查找数据
        */


    //1.定义数组
    int arr[] = { 7,23,79,81,103,127,131,147 };
    int len = sizeof(arr) / sizeof(int);

    //2.定义变量表示要查找的数据
    int num = 150;

    //3.调用函数查找数据
    int index = binarySearch(arr, len, num);

    //4.输出
    printf("%d\n", index);



    return 0;
}

//作用:利用二分查找法查找数据
//返回值:数据在数组中的索引
//找到了,真实的索引
//没有找到,返回-1
int binarySearch(int arr[], int len, int num)
{
    //1.确定查找的范围
    int min = 0;
    int max = len - 1;

    //2.利用循环不断得进行查找
    while (min <= max)
    {
        //确定中间位置
        int mid = (min + max) / 2;
        //比较
        //min max mid 表示索引
        //num表示要查找的元素
        //坑:arr[mid]跟num进行比较
        if (arr[mid] < num)
        {
            //要查找的数据在右边
            min = mid + 1;
        }
        else if (arr[mid] > num)
        {
            //要查找的数据是在左边
            max = mid - 1;
        }

        else
        {
            return mid;
        }
    }

    //3.如果min大于maxl,表示数据不存在,赶回-1
    return -1;


}

笔记


网站公告

今日签到

点亮在社区的每一天
去签到