数组

一  、数组的概述

    数组是存放相同类型的有顺序的变量集合

    特点: 1.数组中数据元素都是相同的数据类型

                2.数组是有连续的内存位置组成的

                    arr[0]中的[0]是下标,可以通过下标访问数组中的元素

二、一维数组

   2.1一维数组定义方式(3)

       数据类型   数组名 [数组数组长度]

        数据类型   数组名 [数组数组长度]={值1,值2,值3.....}

        数据类型   数组名[ ] = { 值1,值2,值3..... }

           列如:int a[5];//表示一个数组名为a的数组,有十个元素整形

                                   5个元素为:a[0],a[1],a[2],a[3],a[4],a[5]

  2.2 一维数组数组名

       用途:1.可以统计整个数组中的内存长度

                  2.可以获取内存中的首址

                         元素取首地址前要加&      

 

#include <iostream>
using namespace std;
int main()
{
	//数组名的用途
	//1.可以统计整个数组在内存中的长度
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	cout << "整个数组占用的内存空间为: " << sizeof(arr) << endl;
	cout << "每个元素占用的内存空间为: " << sizeof(arr[0]) << endl;
	cout << "数组中的元素为: " << sizeof(arr) / sizeof(arr[0]) << endl;


	//2.可以获取数组中的首址
	cout << "数组的首地址为: " << (int)arr << endl;
	cout << "数组中第一个元素的地址为: " <<(int)& arr[0] << endl;
	cout << "数组中第2个元素的地址为: " << (int)&arr[1] << endl;
	//数组名是常量,不可以进行赋值操作
	return 0;
}

数组名是一个地址常量,不允许改变,不可以进行赋值操作,但是数组中的元素是变量,可以改变赋值

    

2.3冒泡排序

   1. 比较相邻元素,如果第一个比第二个大,则交换

   2.每一个相邻元素做相同工作,执行后找到第一个最大的

   3.重复以上步骤

      (外层)排序的总轮数=元素个数-1

      (内层)每轮对比的次数=元素个数-排序轮数-1


#include<iostream>
using namespace std;
int main()
{
	int a[10]; int i, j, k;
	cout << "请输入十个整数" << endl;
	for (i = 0; i <= 9; i++)
	{
		cin >> a[i];
	}
	for (j = 0; j < 9; j++)
	{
		for (i = 0; i < 9 - j; i++)
		{
			if (a[i] > a[i + 1])
				{ k = a[i]; a[i] = a[i + 1]; a[i + 1] = k; }

		}
	}
	cout << endl << "请输入从小到大冒泡排序后的十个数";
	for(i=0;i<10;i++)
	{
		cout << a[i] << endl;
	}
	cout << endl;
	return 0;


2.4查找算法(折半查找)

     将有序数列逐次折半,并确定数据的位置和大小,用待查找的数据与其比较,若相等则查找成      功.否则,如果待查找的数据比折半位置的数据小,那么到前半区继续查找,否则到后半区查找

    

#include<iostream>
using namespace std;
void main()
{
      int s[10]={-56,-23,0,8,10,12,26,38,65,98}
      int low,high,binary,x;
      cout<<"请输入要查找的数据: "<<endl;
      cin>>x;
      low=0;high=9;
      binary=(low+hogh)/2;
      while(x!=s[binary] &&low<=high)
         {
           if(x<s[binary])   high=binary-1;
              else loe=binary+1;
            binary=(low+high)/2;
          }
       if(low<=high)
          cout<<"查找成功!在数组中的下标为:"<<binary<<endl;
        else  cout<<" 没有找到数据"<<endl;
}

三  、二维数组

     3.1二维数组定义方式(4)

       1.数据类型  数组名[行] [列]

       2.数据类型  数组名[行] [列]={{数据1,数据2},{数据3,数据4}}

       3.数据类型  数组名[行] [列]={数据1,数据2,数据3,数据4}

       4.数据类型  数组名[ ] [列]={数据1,数据2,数据3,数据4}

   3.2二维数组数组名

       用途:1.查看二维数组所占内层空间

                   2.获取二维数组首地址

#include<iostream>
using namespace std;
int main()
{
	int arr[2][3] =
	{
		{1,2,3},
		{4,5,6}
	};
	cout << "二维数组所占空间: " << sizeof(arr) << endl;
	cout << "二维数组第一行所占内存空间: " << sizeof( arr[0] )<< endl;
	cout << "二维数组第一个元素占用空间:" << sizeof( arr[0][0]) << endl;
	cout << "二维数组的行数为: " << sizeof(arr) / sizeof (arr[0]) << endl;
	cout << "二维数组的列数为: " << sizeof (arr[0]) / sizeof (arr[0][0]) << endl;


	cout << "二维数组首地址为: " <<(int) arr << endl;
	cout << "二维数组第一行的首地址为: " << (int)arr[0] << endl;
	cout << "二维数组第二行的首地址为: " << (int)arr[1] << endl;

	cout << "二维数组第一个元素首地址为: " << (int)&arr[0][0] << endl;
	cout << "二维数组第二个元素首地址为: " << (int)&arr[0][1] << endl;

	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值