@darpan : storing the +ve and -ve numbers in a separate array and using it later for restoring the array will do the trick.
@bhaskar: if thee numbers are 0 & 1 then no extra space required else you need O(n) extra space. -- Amol Sharma Final Year Student Computer Science and Engineering MNNIT Allahabad <http://gplus.to/amolsharma99> <http://twitter.com/amolsharma99><http://in.linkedin.com/pub/amol-sharma/21/79b/507><http://www.simplyamol.blogspot.com/><http://facebook.com/amolsharma99> On Mon, Jul 2, 2012 at 8:35 AM, shiva@Algo <shiv.jays...@gmail.com> wrote: > * > while(A[j]<0&&i<=mid) > swap(A[j],A[i]) > i++ > j++ > > > On Mon, Jul 2, 2012 at 8:34 AM, shiva@Algo <shiv.jays...@gmail.com> wrote: > >> A simple Divide and Conquer strategy can work Well >> >> Seg_pos_neg(A,beg,end) //A is the array >> -> >> mid=beg+end/2 >> if(beg<end) >> Seg_pos_neg(A,beg,mid) >> Seg_pos_neg(A,mid+1,end) >> //if leftsubarray contains +ve no and right subarray -ve >> array,we swap them >> if(A[mid+1]<0) >> j=mid+1 >> i=beg >> while(A[i]<0&&i<=mid) >> i++ >> while(A[j]<0&&i<=mid) >> swap(A[j],A[i]) >> -> >> Running Time O(nlogn) >> O(1) space >> Correct me if I'm Wrong..................... >> >> >> >> On Mon, Jul 2, 2012 at 7:53 AM, Bhaskar Kushwaha < >> bhaskar.kushwaha2...@gmail.com> wrote: >> >>> @amol u have used O(n) extra space! >>> I think it's not possible without using extra space. >>> >>> On 7/2/12, Darpan Baweja <darpan.bav...@gmail.com> wrote: >>> > @amol :- i don't think this algo would work here >>> > after sorting how would you replace back the original no.s(as no.s are >>> not >>> > 0 and 1 in this case) >>> > >>> > On Sun, Jul 1, 2012 at 11:08 PM, Amol Sharma <amolsharm...@gmail.com> >>> > wrote: >>> > >>> >> i think it has been discussed before....nevertheless here is the >>> required >>> >> linear time solution. >>> >> >>> >> first, count the total number 0's and 1's in the array. >>> >> >>> >> let say, total elements are n and there are x zero's. >>> >> >>> >> take count1=0 and count2=x; >>> >> >>> >> traverse through the array : >>> >> for(i=0;i<n;i++) >>> >> if(arr[i]==0) >>> >> arr[i]=count1++; >>> >> else >>> >> arr[i]=count2++; >>> >> >>> >> let's say array is {1,0,0,0,1,1,1,0,0,1} n=10,x=5 >>> >> count1=0;count2=5 >>> >> >>> >> after the traversal it becomes a[]={5,0,1,2,6,7,8,3,4,9} >>> >> >>> >> now sort this array in O(n) like this : >>> >> >>> >> for(j=0;j<=1;j++) >>> >> { >>> >> for(i=0;i<n;i++) >>> >> { >>> >> if(arr[i]!=i) >>> >> swap(arr[i],arr[arr[i]]); >>> >> } >>> >> } >>> >> >>> >> after the array is sorted again traverse the array and set the >>> elements >>> >> from index 0 to x-1 to '0' and rest '1'. >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> -- >>> >> >>> >> >>> >> Amol Sharma >>> >> Final Year Student >>> >> Computer Science and Engineering >>> >> MNNIT Allahabad >>> >> >>> >> <http://gplus.to/amolsharma99> >>> >> <http://twitter.com/amolsharma99>< >>> http://in.linkedin.com/pub/amol-sharma/21/79b/507>< >>> http://www.simplyamol.blogspot.com/><http://facebook.com/amolsharma99> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> On Fri, Jun 29, 2012 at 9:20 PM, Bhaskar Kushwaha < >>> >> bhaskar.kushwaha2...@gmail.com> wrote: >>> >> >>> >>> @Hassan I think your algo will take time O(n^2) in worst case which >>> >>> occurs when all elements are negative except the last one >>> >>> @everyone Can we solve this problem in linear time? >>> >>> >>> >>> >>> >>> On Fri, Jun 29, 2012 at 9:10 PM, Hassan Monfared >>> >>> <hmonfa...@gmail.com>wrote: >>> >>> >>> >>>> Hi, >>> >>>> this can be done by simple modification in bubble sort : >>> >>>> void inplace_pos_neg(int pdata[],int sz) >>> >>>> { >>> >>>> bool changed=false; >>> >>>> do >>> >>>> { >>> >>>> changed=false; >>> >>>> for(int i=1;i<sz;i++) >>> >>>> if(pdata[i-1]>0 && pdata[i]<0) >>> >>>> { >>> >>>> swap(pdata[i-1], pdata[i]); >>> >>>> changed=true; >>> >>>> } >>> >>>> }while(changed); >>> >>>> } >>> >>>> >>> >>>> void test_inplace_pos_neg() >>> >>>> { >>> >>>> int a[]={-1,-5,10,11,15,-500,200,-10}; >>> >>>> >>> >>>> >>> copy(a,a+sizeof(a)/sizeof(int),ostream_iterator<int>(cout,","));cout<<endl; >>> >>>> inplace_pos_neg(a,sizeof(a)/sizeof(int)); >>> >>>> >>> >>>> >>> copy(a,a+sizeof(a)/sizeof(int),ostream_iterator<int>(cout,","));cout<<endl; >>> >>>> >>> >>>> } >>> >>>> >>> >>>> >>> >>>> Regards >>> >>>> >>> >>>> On Fri, Jun 29, 2012 at 7:52 PM, utsav sharma >>> >>>> <utsav.sharm...@gmail.com>wrote: >>> >>>> >>> >>>>> @bhaskar:- please explain stable sorting algorithm you would use(as >>> >>>>> mainly all of them require extra space) >>> >>>>> @sourabh:- that previous post discussion does't lead to any correct >>> >>>>> soln >>> >>>>> >>> >>>>> On Fri, Jun 29, 2012 at 8:39 PM, Bhaskar Kushwaha < >>> >>>>> bhaskar.kushwaha2...@gmail.com> wrote: >>> >>>>> >>> >>>>>> @saurabh please provide the link to the post you are mentioning >>> >>>>>> >>> >>>>>> On Fri, Jun 29, 2012 at 8:38 PM, Bhaskar Kushwaha < >>> >>>>>> bhaskar.kushwaha2...@gmail.com> wrote: >>> >>>>>> >>> >>>>>>> If the order is important then I think we can use any stable >>> >>>>>>> sorting >>> >>>>>>> algorithm with the following comparison function >>> >>>>>>> >>> >>>>>>> int compare (int a ,int b) >>> >>>>>>> { >>> >>>>>>> if((a>0&&b>0)||(a<0&&b<0)) return 0; >>> >>>>>>> else return a<b; >>> >>>>>>> } >>> >>>>>>> On Fri, Jun 29, 2012 at 3:37 PM, raghavan M < >>> >>>>>>> peacelover1987...@yahoo.co.in> wrote: >>> >>>>>>> >>> >>>>>>>> This is a variant of that one >>> >>>>>>>> >>> >>>>>>>> ------------------------------ >>> >>>>>>>> *From:* saurabh singh <saurab...@gmail.com> >>> >>>>>>>> *To:* algogeeks@googlegroups.com >>> >>>>>>>> *Sent:* Friday, 29 June 2012 3:05 PM >>> >>>>>>>> >>> >>>>>>>> *Subject:* Re: [algogeeks] MS Question: Segregrate positive and >>> >>>>>>>> negative nos in array without changing order >>> >>>>>>>> >>> >>>>>>>> duplicate of a previous post.Kindly refer to that post. >>> >>>>>>>> Saurabh Singh >>> >>>>>>>> B.Tech (Computer Science) >>> >>>>>>>> MNNIT >>> >>>>>>>> blog:geekinessthecoolway.blogspot.com >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> On Fri, Jun 29, 2012 at 10:41 AM, raghavan M < >>> >>>>>>>> peacelover1987...@yahoo.co.in> wrote: >>> >>>>>>>> >>> >>>>>>>> Hi >>> >>>>>>>> Question as in subject >>> >>>>>>>> >>> >>>>>>>> *No extra space (can use one extra space)-O(1) max >>> >>>>>>>> *No order change allowed >>> >>>>>>>> example: >>> >>>>>>>> >>> >>>>>>>> input : 1,-5,2,10,-100,-2 >>> >>>>>>>> output: -5,-10,-100,1,2 >>> >>>>>>>> >>> >>>>>>>> input : -1,-5,10,11,15,-500,200,-10 >>> >>>>>>>> output : -1,-5,-10,-500,-10,10,11,15 >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> Thanks >>> >>>>>>>> Raghavn >>> >>>>>>>> -- >>> >>>>>>>> You received this message because you are subscribed to the >>> Google >>> >>>>>>>> Groups "Algorithm Geeks" group. >>> >>>>>>>> To post to this group, send email to algogeeks@googlegroups.com >>> . >>> >>>>>>>> To unsubscribe from this group, send email to >>> >>>>>>>> algogeeks+unsubscr...@googlegroups.com. >>> >>>>>>>> For more options, visit this group at >>> >>>>>>>> http://groups.google.com/group/algogeeks?hl=en. >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> -- >>> >>>>>>>> You received this message because you are subscribed to the >>> Google >>> >>>>>>>> Groups "Algorithm Geeks" group. >>> >>>>>>>> To post to this group, send email to algogeeks@googlegroups.com >>> . >>> >>>>>>>> To unsubscribe from this group, send email to >>> >>>>>>>> algogeeks+unsubscr...@googlegroups.com. >>> >>>>>>>> For more options, visit this group at >>> >>>>>>>> http://groups.google.com/group/algogeeks?hl=en. >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> -- >>> >>>>>>>> You received this message because you are subscribed to the >>> Google >>> >>>>>>>> Groups "Algorithm Geeks" group. >>> >>>>>>>> To post to this group, send email to algogeeks@googlegroups.com >>> . >>> >>>>>>>> To unsubscribe from this group, send email to >>> >>>>>>>> algogeeks+unsubscr...@googlegroups.com. >>> >>>>>>>> For more options, visit this group at >>> >>>>>>>> http://groups.google.com/group/algogeeks?hl=en. >>> >>>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> -- >>> >>>>>>> regards, >>> >>>>>>> Bhaskar Kushwaha >>> >>>>>>> Student >>> >>>>>>> Final year >>> >>>>>>> CSE >>> >>>>>>> M.N.N.I.T. Allahabad >>> >>>>>>> >>> >>>>>>> >>> >>>>>> >>> >>>>>> >>> >>>>>> -- >>> >>>>>> regards, >>> >>>>>> Bhaskar Kushwaha >>> >>>>>> Student >>> >>>>>> Final year >>> >>>>>> CSE >>> >>>>>> M.N.N.I.T. Allahabad >>> >>>>>> >>> >>>>>> -- >>> >>>>>> You received this message because you are subscribed to the Google >>> >>>>>> Groups "Algorithm Geeks" group. >>> >>>>>> To post to this group, send email to algogeeks@googlegroups.com. >>> >>>>>> To unsubscribe from this group, send email to >>> >>>>>> algogeeks+unsubscr...@googlegroups.com. >>> >>>>>> For more options, visit this group at >>> >>>>>> http://groups.google.com/group/algogeeks?hl=en. >>> >>>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> -- >>> >>>>> Utsav Sharma, >>> >>>>> NIT Allahabad >>> >>>>> >>> >>>>> -- >>> >>>>> You received this message because you are subscribed to the Google >>> >>>>> Groups "Algorithm Geeks" group. >>> >>>>> To post to this group, send email to algogeeks@googlegroups.com. >>> >>>>> To unsubscribe from this group, send email to >>> >>>>> algogeeks+unsubscr...@googlegroups.com. >>> >>>>> For more options, visit this group at >>> >>>>> http://groups.google.com/group/algogeeks?hl=en. >>> >>>>> >>> >>>> >>> >>>> -- >>> >>>> You received this message because you are subscribed to the Google >>> >>>> Groups "Algorithm Geeks" group. >>> >>>> To post to this group, send email to algogeeks@googlegroups.com. >>> >>>> To unsubscribe from this group, send email to >>> >>>> algogeeks+unsubscr...@googlegroups.com. >>> >>>> For more options, visit this group at >>> >>>> http://groups.google.com/group/algogeeks?hl=en. >>> >>>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> regards, >>> >>> Bhaskar Kushwaha >>> >>> Student >>> >>> Final year >>> >>> CSE >>> >>> M.N.N.I.T. Allahabad >>> >>> >>> >>> -- >>> >>> You received this message because you are subscribed to the Google >>> >>> Groups >>> >>> "Algorithm Geeks" group. >>> >>> To post to this group, send email to algogeeks@googlegroups.com. >>> >>> To unsubscribe from this group, send email to >>> >>> algogeeks+unsubscr...@googlegroups.com. >>> >>> For more options, visit this group at >>> >>> http://groups.google.com/group/algogeeks?hl=en. >>> >>> >>> >> >>> >> -- >>> >> You received this message because you are subscribed to the Google >>> Groups >>> >> "Algorithm Geeks" group. >>> >> To post to this group, send email to algogeeks@googlegroups.com. >>> >> To unsubscribe from this group, send email to >>> >> algogeeks+unsubscr...@googlegroups.com. >>> >> For more options, visit this group at >>> >> http://groups.google.com/group/algogeeks?hl=en. >>> >> >>> > >>> > >>> > >>> > -- >>> > *DARPAN BAWEJA* >>> > *3rd year, I.T* >>> > *MNNIT Allahabad* >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> Groups >>> > "Algorithm Geeks" group. >>> > To post to this group, send email to algogeeks@googlegroups.com. >>> > To unsubscribe from this group, send email to >>> > algogeeks+unsubscr...@googlegroups.com. >>> > For more options, visit this group at >>> > http://groups.google.com/group/algogeeks?hl=en. >>> > >>> > >>> >>> >>> -- >>> regards, >>> Bhaskar Kushwaha >>> Student >>> Final year >>> CSE >>> M.N.N.I.T. Allahabad >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Algorithm Geeks" group. >>> To post to this group, send email to algogeeks@googlegroups.com. >>> To unsubscribe from this group, send email to >>> algogeeks+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/algogeeks?hl=en. >>> >>> >> > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.