gpt4 book ai didi

c++ - 排序帮助 - 插入排序

转载 作者:行者123 更新时间:2023-11-30 02:00:01 26 4
gpt4 key购买 nike

我一直在关注 Alex Allain 的书,以便更好地理解 C++。我已经了解了一些基础知识,但像往常一样在数组和排序算法上遇到困难。无论如何,他提出的问题之一是检查数组是否已排序。如果不是,请对其进行排序...这是代码:

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
void swap(int array[], int firstindex, int secondindex);
int findsmallel(int array[], int size, int index)
{
int indexofsmall=index;
for(int i=index+1; i<size; i++)
{
if(array[i]<array[indexofsmall])
{
indexofsmall=i;
}
}
return indexofsmall;
}
int findhigh(int array[], int size, int index)
{
int indexofhigh=index;
for(int i=index+1; i<size; i++)
{
if(array[i]>array[indexofhigh])
{
indexofhigh=i;
}
}
return indexofhigh;
}
void sortlow(int array[], int size)
{
for (int i=0; i<size; i++)
{
int index=findsmallel(array, size, i);
swap(array, index, i);
}
}
void sorthigh(int array[], int size)
{
for (int i=0; i<size; i++)
{
int index=findhigh(array, size, i);
swap(array, index, i);
}
}
void swap(int array[], int firstindex, int secondindex)
{
int temp=array[firstindex];
array[firstindex]=array[secondindex];
array[secondindex]=temp;
}
void displayarray(int array[], int size)
{
cout<<"{ ";
for(int i=0; i<size;i++)
{
if(i!=0)
{
cout<<", ";
}
cout<<array[i];
}
cout<<" }";
}
int main()
{
int inputedarray[5];
cin>>inputedarray[];
if(inputedarray[4] != sortlow || inputedarray[4] != sorthigh)
{
sortlow(inputedarray, 5);
displayarray(inputedarray, 5);
}
else
cout<<"Array is already sorted."<<endl;
return 0;
}

在检查条件时出现两个有关指针和整数之间比较的错误。任何帮助将不胜感激!编辑:我得到的错误是:C:\Code Block Projects\Alex Allains Book\Chapter 1\main.cpp|84|错误:ISO C++ 禁止比较指针和整数 [-fpermissive]|

还有什么方法可以检查数组是否已排序?请? :(

最佳答案

我认为它的main的第三行是在做比较:检查数组的最后一个元素是否是最小/最大的,以确定数组是否已排序。虽然这不是正确的方法,但让我们假设它正在这样做。更改您的代码从

 if(inputedarray[4] != sortlow || inputedarray[4] != sorthigh)

 if(inputedarray[4] != findsmallel(inputedarray,5,0) ||
inputedarray[4] != findhigh(inputedarray,5,0))

然后您应该能够编译您的代码。

让您的代码正常工作。修改main如下:

int main()
{
int inputedarray[5];
for( int i=0; i<5; i++)
{
cin>>inputedarray[i];
}

if(inputedarray[4] != findsmallel(inputedarray,5,0) ||
inputedarray[4] != findhigh(inputedarray,5,0))
{
sortlow(inputedarray, 5);
displayarray(inputedarray, 5);
}
else
cout<<"Array is already sorted."<<endl;
return 0;
}

然后你应该像这样输入你的整数

2 3 5 1 4

除非您将最大/最小整数作为最后一个输入数字,否则它应该可以正常工作。

关于c++ - 排序帮助 - 插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15565038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com