21xrx.com
2024-05-20 14:06:38 Monday
登录
文章检索 我的文章 写文章
C++ 数组实验报告
2023-07-11 14:38:49 深夜i     --     --
C++语言 数组 实验报告 数据结构 程序设计

本次实验主要目的是掌握C++数组的基本使用方法以及相关知识点,实验内容包括数组的声明、初始化、遍历、排序和查找。

一、数组的声明

在C++中,声明一个数组需要指定数组的类型、名称和元素个数,具体格式如下:


类型 名称[元素个数];

例如,声明一个int类型的数组arr,包含5个元素,则可以写成:


int arr[5];

二、数组的初始化

数组的初始化是为数组元素赋初始值,C++语言中,有以下几种初始化数组的方式:

1. 手动逐个为数组元素赋值


arr[0] = 1;

arr[1] = 2;

arr[2] = 3;

arr[3] = 4;

arr[4] = 5;

2. 使用花括号初始化数组元素


int arr[5] = 2;

3. 只给部分元素初始化,其他元素自动为0


int arr[5] = 2;

三、数组的遍历

数组的遍历是指依次访问数组中的每个元素,常用的方法有for循环遍历和while循环遍历,示例代码如下:

1. for循环遍历


for(int i = 0; i < 5; i++) {

  cout << arr[i] << " ";

}

2. while循环遍历


int i = 0;

while(i < 5) {

  cout << arr[i] << " ";

  i++;

}

四、数组的排序

C++语言提供了多种排序算法,如冒泡排序、选择排序、插入排序、快速排序等,在此仅介绍冒泡排序和快速排序。

1. 冒泡排序

冒泡排序是一种简单的排序算法,时间复杂度为$O(n^2)$,其基本思想是通过相邻元素的比较和交换来实现排序。


for(int i = 0; i < 4; i++) {

  for(int j = 0; j < 4 - i; j++) {

    if(arr[j] > arr[j+1]) {

      int temp = arr[j];

      arr[j] = arr[j+1];

      arr[j+1] = temp;

    }

  }

}

2. 快速排序

快速排序是一种高效的排序算法,其时间复杂度为$O(nlogn)$,其基本思想是选择一个基准元素,通过一趟排序将待排序序列分割为独立的两部分,其中一部分元素均小于基准元素,另一部分元素均大于基准元素。


void quickSort(int arr[], int left, int right) {

  int i, j, base, temp;

  if(left > right)

    return;

  

  base = arr[left];

  i = left;

  j = right;

  while(i != j) {

    while(arr[j] >= base && i < j)

      j--;

    

    while(arr[i] <= base && i < j) {

      i++;

    }

    if(i < j) {

      temp = arr[i];

      arr[i] = arr[j];

      arr[j] = temp;

    }

  }

  arr[left] = arr[i];

  arr[i] = base;

  quickSort(arr, left, i - 1);

  quickSort(arr, i + 1, right);

}

五、数组的查找

C++中,两种常用的查找算法是线性查找和二分查找,其中线性查找适用于无序数组,二分查找适用于有序数组。

1. 线性查找

线性查找的基本思想是从数组第一个元素开始依次比较,直到找到目标元素为止,或者遍历完整个数组。


int linearSearch(int arr[], int len, int target) {

  for(int i = 0; i < len; i++) {

    if(arr[i] == target)

      return i;

    

  }

  return -1;

}

2. 二分查找

二分查找的基本思想是将有序数组分成两部分,取中间位置的元素与目标元素进行比较,如果相等则返回该元素下标,如果小于目标元素则在右半部分继续查找,反之在左半部分查找,直到找到目标元素为止,或者找不到目标元素。


int binarySearch(int arr[], int len, int target) {

  int left = 0, right = len - 1, mid;

  while(left <= right) {

    mid = (left + right) / 2;

    if(arr[mid] == target)

      return mid;

    

    if(arr[mid] < target) {

      left = mid + 1;

    } else

      right = mid - 1;

    

  }

  return -1;

}

六、实验总结

本次实验通过对C++数组的学习,掌握了数组的基本操作方法,包括声明、初始化、遍历、排序和查找等,同时了解了C++语言中常用的排序算法和查找算法,为后续应用程序的开发提供了基础。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复