ReordeArray

    xiaoxiao2025-03-02  20

    #include<stdio.h> bool isEven(int n){ return (n&1)==0; } void Reorder(int *pData,int length,bool (*fun)(int)){ if(pData==NULL||length==0) return; int temp; int *p=pData; int *q=pData+length-1; while(p<q){ while(p<q&&!fun(*p)) p++; while(p<q&&fun(*q)) q--; temp=*p; *p=*q; *q=temp; } } void Print(int* pData,int length){ int* p=pData; int i=0; while(i<length){ printf("%3d",*(p+i)); i++; } printf("\n"); } void main(){ int data[]={1,2,3,4,5,6}; Reorder(data,6,isEven); Print(data,6); int data_1[]={2,4,6,7,1,3,5}; Reorder(data_1,7,isEven); Print(data_1,7); int numbers[] = {2}; Reorder(numbers,1,isEven); Print(numbers,1); Reorder(NULL,0,isEven); Print(NULL,0); }
    转载请注明原文地址: https://ju.6miu.com/read-1296815.html
    最新回复(0)