設任意n個整數存放於陣列A[1..n]中,試編寫演算法,將所有正數排在所有負數前面(要求:演算法時間複雜度為O(n))。
阿新 • • 發佈:2018-11-12
注意陣列的實際長度
#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; }