数组里的正数和负数排序

来源:互联网 发布:防火墙拦截udp端口 编辑:程序博客网 时间:2024/04/27 14:08
/*  假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,  且保证负数之间和正数之间元素相对位置不变。时空复杂度要求分别为:o(n),o(1)  我是简单模拟的空间复杂度 o(1) 时间复杂度最坏 o(n*n)*/#include <stdio.h>void f(int a[],int n){    int temp=0,i=0,j,count=0;    int num=0;    int k;   // while(i<n)    for(i=0;i<n;i++)    {        if(a[i]>0)        {           num++;           continue;        }        count=num;        k=i;        temp=a[k];         while(count>0)        {           a[k]=a[k-1];            k--;            count--;                }        a[k]=temp;      }}int main(){        int a[]={-5,2,-3, 4,-8,-9,1, 3,-10};        for(int i=0;i<9;i++)      printf("%d ",a[i]);    printf("\n");        f(a,9);    for(int i=0;i<9;i++)      printf("%d ",a[i]);      printf("\n");    //for(;;);  return 0;}

原创粉丝点击