一维数组
// chapter07a02数组.cpp
//熟练使用一位数组解决实际问题(标志符、数组元素、元素下标、元素类型)
//掌握二维数组的使用
//使用数组实现常用算法
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
const int N = 5; //常量
int nums[N] = { 12,123,'C',123 };
cout << nums[2] << endl;
int num1[] = { 12,123,true ,123 };
cout << num1[2] <<endl;
int days[100] = {};
cout << days[2];
}
eg1:输入数组内容并打印
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
//求数组中的最大值和最小值,并输出对应下标
int nums[] = {8,54,65,84,52};
int numsLens = sizeof(nums) / sizeof(int); //计算出数组的长度
int max = nums[0]; //最大值
int min = nums[0];
int maxIndex = 0; //最大值下标
int minIndex = 0;
for (int i = 0; i < numsLens; i++)
{
if (max < nums[i])
{
max = nums[i];
maxIndex = i;
}
if (min > nums[i])
{
min = nums[i];
minIndex = i;
}
}
cout << "数组最大值为:"<< max << " "<< "下标为:" << maxIndex << endl;
cout << "数组最小值为:" << min << " " << "下标为:" << minIndex << endl;
}
结果为:
数组最大值为:84 下标为:3
数组最小值为:8 下标为:0
eg2:冒泡排序:循环录入5个整型数字,进行降序排列后输出结果
// chapter08a01数组.cpp
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
//循环录入5个整型数字,进行降序排列后输出结果
//方案1:使用冒泡排序
// 第一轮比较的次数:数组的总长度-1
//下一轮比上一轮比较的次数少一次
int nums[] = {12,45,56,878,2};
int temp;
int numsLens = sizeof(nums) / sizeof(int); //计算出数组的长度
cout << "排序前的结果为:" ;
for (int i = 0; i < numsLens; i++)
{
cout << nums[i] << '\t';
}
//外层循环控制比较的轮数
for (int i = 0; i < numsLens -1 ; i++)
{
//内层循环控制每轮的比较和交换
for (int j = 0; j < 4 - i; j++)
{
if (nums[j] < nums[j + 1])
//交换
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
cout << endl;
cout << "排序后的结果为:";
for (int i = 0; i < numsLens; i++)
{
cout << nums[i] << '\t';
}
}
eg3:选择排序:循环录入5个整型数字,进行降序排列后输出结果
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
//循环录入5个整型数字,进行降序排列后输出结果
//方案2:使用选择排序
int nums[] = {12,45,56,878,2};
int temp; //临时变量
int numsLens = sizeof(nums) / sizeof(int); //计算整型数组的长度
cout << "排序前的结果为:" ;
for (int i = 0; i < numsLens; i++)
{
cout << nums[i] << '\t';
}
int min = nums[0];//假设最小值为数组里的第一个元素
int minIndex = 0;//最小值的初始下标为0
for (int i = 0; i < numsLens ; i++)
{
min = nums[i];
minIndex = i;
for (int j = i + 1; j < numsLens ; j++)
{
if (nums[j] < min)
{
min = nums[j];
minIndex = j;
}
}
//交换
if (minIndex > i)
{
temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
}
}
cout << endl;
cout << "排序后的结果为:";
for (int i = 0; i < numsLens; i++)
{
cout << nums[i] << '\t';
}
//逆序
for (int i = 0; i < numsLens / 2; i++)
{
temp = nums[i];
nums[i] = nums[numsLens - i - 1];
nums[numsLens - i - 1] = temp;
}
cout << endl;
cout << "逆序后的结果为:";
for (int i = 0; i < numsLens; i++)
{
cout << nums[i] << '\t';
}
}
eg4:数组的排序、插入和删除
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
//排序
double power[99];
int powerCount = 0; // 当前数组中的元素个数
power[powerCount++] = 71;
power[powerCount++] = 56;
power[powerCount++] = 41;
power[powerCount++] = 32;
power[powerCount++] = 14;
cout << "排序前的结果为:";
for (int i = 0; i < powerCount; i++)
{
cout << power[i] << '\t';
}
cout << endl;
//从大到小排序
double temp;
for (int i = 0; i < powerCount; i++)
{
for (int j = 0; j < powerCount - i - 1; j++)
{
if (power[j] < power[j + 1])
{
temp = power[j];
power[j] = power[j + 1];
power[j + 1] = temp;
}
}
}
cout << "排序后的结果为:";
for (int i = 0; i < powerCount; i++)
{
cout << power[i] << '\t';
}
cout << endl;
//插入元素(插入数值之后,仍是有序的)
double insertPower; //要插入的数值
int insertIndex = powerCount; //默认插入到最后一个位置
cout << "请输入要插入的数值:";
cin >> insertPower;
//1.把新数值放在数组的末尾,重新进行排序
//1.找到第一个比插入数组大的位置 insertIndex
for (int i = 0; i < powerCount; i++)
{
if (insertPower > power[i])
{
insertIndex = i;
break;
}
}
//2.从最后一个元素开始,将数值复制到后一个元素中
for (int i = powerCount - 1; i >= insertIndex; i--)
{
power[i + 1] = power[i];
}
//3.将要插入的数字赋值给下标为insertIndex的元素
power[insertIndex] = insertPower;
//4.将数组的总长度加1
powerCount++;
cout << "插入后的结果为:";
for (int i = 0; i < powerCount; i++)
{
cout << power[i] << '\t';
}
cout << endl;
//删除元素
//1.找到要删除的目标
double deletePower;
int deleteIndex = -1;
cout << "请输入要删除的数值:";
cin >> deletePower;
for (int i = 0; i < powerCount; i++)
{
if (deletePower == power[i])
{
deleteIndex = i;
break;
}
}
if (deleteIndex == -1)
{
cout << "没有找到要删除的数字!" << endl;
}
else
{
//2.从找到的下标开始,后面的一个元素赋值给前面的一个元素
for (int i = deleteIndex; i < powerCount - 1; i++)
{
power[i] = power[i + 1];
}
//3.总长度 -1
powerCount--;
cout << "删除后的结果为:";
for (int i = 0; i < powerCount; i++)
{
cout << power[i] << '\t';
}
cout << endl;
}
}