数组——n个整数存放在数组中,将正数排在负数前,时间复杂度为O(n)

 

#include<iostream>
#include <cstring>
#include <fstream>
using namespace std;

#define MAXLEN 255

/*
n个整数存放在数组中,将正数排在负数前,时间复杂度为O(n)
*/


void change(int a[],int i,int j){
    int a1 = a[i];
    a[i] = a[j];
    a[j] = a1;
}

void Arrange(int a[],int n){
    int i,j;
    i = 0;
    j = n-1;
    while((i!=j) &&(j+1 != i)){
     
        while(a[i]>0 )i++;
        while(a[j]<0)j--;
        change(a,i,j);       
    }
    change(a,i,j); 
}

//修改

void Arrange1(int a[],int n){
    int i,j;
    i = 0;
    j = n-1;
    while(i < j){
     
        while(a[i]>0 && i<j )i++;   //添加i<j条件,就可以避免多交换一次
        while(a[j]<0 && i<j)j--;
        change(a,i,j);       
    }
    
}


int main(){


   
    int a[]={-1,-2,1,2,5,-8,-8,2};
    Arrange1(a,8);
    for(int i=0;i<8;i++) cout << a[i];


    system("pause");
    return 0;
}

 

posted @ 2020-11-22 16:27  倔强的不死人  阅读(336)  评论(0编辑  收藏  举报