#include <iostream>
using namespace std;
//将一维数组a中的n个数逆序存入到原数组中
void method1(int arr[], int n)
{//在原地工作,不开辟辅助空间,只需要一个临时变量,进行交换(例如首尾)
int t = -1;
for(int i = 0; i < n/2; i++) //循环n/2就可以了
{
t = arr[i];
arr[i] = arr[n-i-1]; //5个数据 a[0]和a[4]交换
arr[n-i-1] = t;
}
}
void method2(int arr[], int n, int b[])
{//另外开辟一个新的空间(新的数组),再赋值给原来的数组。
for(int i =0; i < n; i++)
{
b[i] = arr[n-1-i]; //新数组b中的第一个元素是arr中的最后一个元素
}
for(int i = 0; i < n; i++)
{
arr[i] = b[i]; //根据题目的要求逆序存入到原数组中去
}
}
//测试
int main(){
int number;
cin>>number;
int arr[number];
cout<<"请依次输入数组a中的元素:";
for(int i=0; i<number; i++)
{
cin>>arr[i];
}
method1(arr, number);
cout<<"最终逆序排序后的结果为:";
for(int i=0; i<number; i++)
{
cout<<arr[i]<<" ";
}
return 0;
}
逆序算法的比较(空间复杂度)
最新推荐文章于 2024-08-22 17:27:46 发布