#include <stdio.h> void partSort(int arr[],int l,int r) { int p=l,i=l,t,cnt=0; printf("\n负数调在前\n"); for(;i<=r;i++) { if(arr[i]<0) { t=arr[i];arr[i]=arr[p];arr[p]=t; p++; } } //p停止在第一个非负数上面; for(i=l;i<=r;i++) printf("%6d",arr[i]); printf("\n"); while(arr[p]==0)//过滤掉零 p++; printf("把零调在正数前\n"); for(i=r;i>=p;i--) if(arr[i]==0) { t=arr[i];arr[i]=arr[p];arr[p]=t; while(arr[p]==0)//过滤掉零 p++; cnt++; } for(i=l;i<=r;i++) printf("%6d",arr[i]); printf("\n"); } void main() { int arr[]={3,-1,2,0,-3,8,9,-4,0,2}; printf("原始数据\n"); for(int i=0;i<=9;i++) printf("%6d",arr[i]); partSort(arr,0,9); }