CPP   75

qsort

Guest on 30th June 2022 02:59:47 AM

  1. #include<iostream>
  2. using namespace std;
  3. int k[101],n,divi,i,j;
  4. void qs(int k[],int left,int right)
  5. {
  6.     if(left<right)
  7.     {
  8.         divi=left;
  9.         i = left + 1;
  10.         j = right;
  11.         do
  12.         {
  13.             for(i;k[i]<k[divi]&&i<=right;i++);//[divi]
  14.             for(j;k[j]>k[divi]&&j>=left;j--);
  15.             if(i<j)
  16.                                                 {
  17.                                                         k[i]^=k[j]^=k[i]^=k[j];
  18.                                                         i++;
  19.                                                         j--;
  20.                                                 }
  21.         }while(i<j);
  22.         if(divi != j)
  23.                                 {
  24.                                         k[divi]^=k[j]^=k[divi]^=k[j];//[divi]
  25.                                 }
  26.         cout << left << right << endl;
  27.         for(i=0;i<n;i++)cout<<k[i]<<" ";cout<<"\n";
  28.         qs(k,left,j-1);
  29.         qs(k,j+1,right);
  30.     }
  31. }
  32.  
  33. int main()
  34. {
  35.   while(1)
  36.     {
  37.         cin>>n;
  38.         for(i=0;i<n;i++)cin>>k[i];
  39.         qs(k,0,n-1);
  40.         for(i=0;i<n;i++)cout<<k[i]<<" ";cout<<"\n";
  41.     }
  42.     return 0;
  43. }

Raw Paste


Login or Register to edit or fork this paste. It's free.