题目: 计数偶数分类, 奇数放前面, 偶数放后面
自己创造的
#include <bits/stdc++.h>
using namespace std;
int main(){
int arr[1000];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>arr[i];
}
int p1=0,p2=0;
while(p1<n){
if(arr[p1]%20){
p2=p1;
while(p2<n){
if(arr[p2]%21) swap(arr[p1],arr[p2]),p2=n;
else p2++;
}
if(arr[p1]%2==0)break;
}
else {
p1++;
}
}
for(int i=0;i<n;i++){
if(i<n-1)cout<<arr[i]<<" ";
else cout<<arr[i]<<endl;
}
return 0;
}
快排类似的算法:
#include <bits/stdc++.h>
using namespace std;
int main(){
int arr[1000];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>arr[i];
}
int p1=0,p2=n-1;
while(p1<p2){
while(p1<p2&&arr[p1]%2==1){
p1++;
}
while(p1<p2&&arr[p2]%2!=1){
p2–;
}
swap(arr[p1],arr[p2]);
p1++;
p2–;
}
for(int i=0;i<n;i++){
if(i<n-1)cout<<arr[i]<<" ";
else cout<<arr[i]<<endl;
}
return 0;
}