本文主要是介绍C++学习5(一维数组 、冒泡排序算法),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream>
using namespace std;
int main()
{
//数组 :放在一块连续的内存空间中,数组中的每个元素都是相同数据类型
//三种定义方法
/*数据类型 数组名 [数组长度]
数据类型 数组名 [数组长度]={值1,值2.....}
数据类型 数组名 []={值1,值2....}*/
cout << "数组第一种定义方法" << endl;
int arr1[5];
//给数组中元素赋值
arr1[0] = 10;
arr1[1] = 20;
arr1[2] = 30;
arr1[3] = 40;
arr1[4] = 50;
//访问数据元素
cout << arr1[0] << endl;
cout << "\n " << endl;
cout << "第二种定义方法 " << endl;
int arr2[5] = { 10,20,30,40,50 };//如果初始化数据时值填写三个那么剩余两个用0填补
cout << arr2[0] << endl;
/*cout << sizeof(arr)/sizeof(int) << endl;
可以动态获取数组中元素个数
使用sizeof可以获取到整个数组的大小,然后除以单个元素大小,即类型大小即可得到个数。
如果类型为T,数组为a,那么sizeof(a) / sizeof(T)就是数组元素个数*/
for (int i=0;i <5;i++)
{
cout << arr2[i]<<" ";
}
cout << endl;
cout << "\n " << endl;
cout << "第三种定义方法 " << endl;
//第三种定义时必须有初始长度
int arr3[] = { 10,20,30,4,5,6,8,7,9,40,50,60 };
for (int i = 0;i < sizeof(arr3) / sizeof(int);i++)
{
cout << arr3[i] << " ";
}
cout << endl;
cout << "\n " << endl;
//数组名
cout << "数组名的用途" << endl;
//可以统计整个数组在内存中的长度,
cout << "数组arr3占用的内存大小(12个元素)" << sizeof(arr3) << endl;
cout << "每个元素所占用的内存空间(例:第一个)" << sizeof(arr3[0]) << endl;
//可以获取数组在内存中的首地址
cout << "数组的首地址" << (int/*强制把16进制转化为10进制*/)arr3 << arr3 << endl;
cout << "数组中第一个元素的地址" << (int)&arr3[0] << &arr3 [0]<< endl;
cout << "数组中第二个元素的地址" << (int)&arr3[1] << &arr3 [1]<< endl;
//两个元素地址差4字节
//数组名是一个常量,不可以进行赋值操作
cout << "\n " << endl;
//一维数组练习案例
cout << "在数组中找最大值" << endl;
int arr4[5] = { 300,350,200,400,2500 };
int max = 0;
cout << "数组arr4为:";
for (int i = 0;i < 5 ;i++)
{
cout << arr4[i] << " ";
}
cout << endl;
for (int i = 0;i < 5;i++)
{
if (max < arr4[i])
{
max = arr4[i];
}
}
cout << "这个数组中的最大值为" << max << endl;
//数组元素逆置
cout << "数组元素逆置" << endl;
int arr5[5] = { 30,35,26,48,19 };
int start = 0;//记录起始下标
int end = sizeof(arr5) / sizeof(arr5[0])-1;
cout << sizeof(arr5) / sizeof(arr5[0]);
cout << "数组arr5为:";
for (int i = 0;i < 5;i++)
{
cout << arr5[i] << " ";
}
cout << endl;
while (start<end)
{
int temp = arr5[start];//临时值
arr5[start] = arr5[end];
arr5[end] = temp;
//下标更新
start++;
end--;
}
cout << "逆置后数组arr5为:";
for (int i = 0;i < 5;i++)
{
cout << arr5[i] << " ";
}
cout << endl;
cout << "\n " << endl;
//冒泡排序
/*作用:最常用的排序算法,对数组中内元素进行排序
1.比较相邻的元素,如果第一个比第二个大,就交换它们两个
2.对每一对相邻的元素做同样的工作,执行完毕后,找到第一个最大值
3.重复以上步骤,每次比较此时-1,知道不需要比较。*/
//排序总轮数= 元素个数 - 1, 每轮对比次数 = 元素个数 - 排序轮数 - 1
cout << "将数组arr6进行升序排序(冒泡排序)" << endl;
int arr6[9] = {4,2,8,0,5,7,1,3,9};
cout << "排序前数组arr6位:";
for (int i = 0;i < 9;i++)
{
cout << arr6[i] << " ";
}
cout << endl;
//轮数循环 排序总轮数= 元素个数 - 1
for (int i = 0;i < 9-1;i++)
{
//内层循环对比相邻两个元素 每轮对比次数 = 元素个数 - 排序轮数 - 1
for (int j = 0;j < 9 - i - 1;j++)
{
if (arr6[j] > arr6[j + 1])
{
int temp1 = arr6[j];
arr6[j] = arr6[j + 1];
arr6[j + 1] = temp1;
}
}
}
cout <<"排序后数组arr6为:";
for (int i = 0;i < 9;i++)
{
cout << arr6[i] << " ";
}
cout << endl;
cout << "\n " << endl;
system("pause");
return 0;
}
这篇关于C++学习5(一维数组 、冒泡排序算法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!