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~4int 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,表示数据不存在,赶回-1return -1;}
笔记

