#include<iostream>
using namespace std;
void sort3p(int* x,int len)//x数组名 mod left right 均为数组下标
{
int mod=0;//指针 探兵
int left=0;//左边的数字
int right=len-1;//右边的数字 数组下标比长度-1
while(mod<=right) {//mod为左端点 第一个元素
if(x[mod]<0){
//将小于0的都移到mod的左边
int t=x[left];
x[left]=x[mod];
x[mod]=t;
left++;
mod++;
}
else if(x[mod]>0){
int t=x[right];
x[right]=x[mod];
x[mod]=t;//x[mod]与x[right]置换后继续判断正负
right--;
}
//指向下一个元素 不发生置换
else//mod==0
mod++;//填空位置
}
}
//给定数组:25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
int main(){
int arr[14]={25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0};
sort3p(arr,14);
for(int i=0;i<14;i++{
cout<<arr[i]<<" ";
}
return 0;
}
三部排序(代码填空)
最新推荐文章于 2024-10-01 22:51:02 发布