【发布时间】:2022-01-26 01:28:46
【问题描述】:
我正在尝试查找 数组的分区,通过检查变量 x 的条件,当小于 x 时,它们将位于一侧或另一侧。 但我的代码需要一些更正。 这里我找不到错误,如果你能帮助我,我会很感激你。 代码是:-
#include<iostream>
using namespace std;
int partition(int arr[],int n,int x){
for(int i=0;i<n;){
if(arr[i]<x){
i++;
}
else if(arr[i]==x){
int temp=arr[i];
arr[i]=arr[n];
arr[n]=temp;
i--;
}
else if(arr[i]>x){
int temp=arr[i];
for(int j=i;j<n;j++){
arr[j]=arr[j+1];
}
arr[n]=temp;
i--;
}
}
return 0;
}
int main(){
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++){
cin>>arr[i];
}
int x;
cin>>x;
partition(arr,n,x);
for(int i=0;i<n;i++){
cout<<arr[i]<<"\t";
}
return 0;
}
Input >> array={2,10,15,1,3,15} ,x=10
Expected << {2,1,3,10,15,15}
Output I get << nothing .
【问题讨论】:
-
欢迎来到 Stack Overflow。此代码无法编译;请发布您实际使用的代码。另外,在这种情况下最好的办法是调试程序。这是每个程序员都必须学习的基本技能。
-
...乍一看,您的函数读取到数组末尾之后,这会导致 未定义的行为。(如果您不知道那是什么,请看起来。)
-
请问您要的是稳定分区还是普通的不稳定分区。您的预期输出看起来像一个稳定的分区,但在问题中,您只需说“分区”而且您的解决方案看起来更像“不稳定”分区。这些信息非常重要。我假设您的意思是“不稳定”。 . .
标签: c++ arrays sorting compiler-errors partition