1. 程式人生 > >設任意n個整數存放於陣列A[1..n]中,試編寫演算法,將所有正數排在所有負數前面(要求:演算法時間複雜度為O(n))。

設任意n個整數存放於陣列A[1..n]中,試編寫演算法,將所有正數排在所有負數前面(要求:演算法時間複雜度為O(n))。

注意陣列的實際長度

#include <iostream>
using namespace std;

void sort(int A[],int n)
{
    int i=0;//陣列的頭下標
    int j,x;
    j=n-1;//陣列的尾下標
    while (i<j)
    {
        while (i<j&&A[i]>0)i++;
        while (i<j&&A[j]<0)j--;
        if(i<j){x=A[i];A[i++]=A[j];A[j--]=x;}
    }
}


int main()
{
    int A[20]={0};
    int a,i=0;
    cout<<"請輸入整型陣列的元素,以0結束,不包括0"<<endl;
    while(a!=0)
    {
        cin>>a;
        A[i++]=a;
    }
    int n=i-1;//陣列的實際長度

    cout<<"原陣列為:";
    for(int j=0;j<n;j++)
        {cout<<A[j]<<" ";}

    cout<<endl;
    sort(A,n);//把陣列中的整數排在負數前面

    cout<<"處理後的陣列為:";
    for(int k=0;k<n;k++)
        {cout<<A[k]<<" ";}

    return 0;
}