C++学习5(一维数组 、冒泡排序算法)

2021/5/19 14:27:11

本文主要是介绍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(一维数组 、冒泡排序算法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程