Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Max Alekseyev                        2:5015/60      07 Oct 2002  11:47:32
 To : Anatoly Svishev
 Subject : qsort
 -------------------------------------------------------------------------------- 
 
 
 Replying to a message of Anatoly Svishev to Max Alekseyev:
 
  AS> int a[]={16,1,2,3,16,17,18,19};
  AS> Здесь будет вечное зависание ...
 
 Та версия была для массива из _различных_ чисел. Если есть одинаковые - то вот
 модификация:
 
 ===cut===
 void qsort(int *a,int d)          // quicksort array a[0],...,a[d-1]
 {
     if(d<=1) return;
     int med = a[0], i = 0, j = d-1;
     while(1) {
         while((i<j) && (a[j]>=med)) j--;
         while((i<j) && (a[i]<med)) i++;
         if(i>=j) break;
         int temp = a[i];
         a[i] = a[j];
         a[j] = temp;
     }
     j++;
     printf("%d: ",j);
     for(int i=0;i<d;i++) printf("%d ",a[i]);
     printf("\n");
     qsort(a,j); qsort(&a[j],d-j);
 }
 ===cut===
 
 ЗЫ. med = a[0] можно заменить, например, на med = a[rand()%d];
 
 Regards,      ш.ш
         Max    ~
 
 --- FleetStreet 1.27.3.8
  * Origin:  (2:5015/60)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 qsort   Anatoly Svishev   04 Oct 2002 23:49:41 
 qsort   Max Alekseyev   04 Oct 2002 20:41:04 
 RE: qsort   Anatoly Svishev   05 Oct 2002 23:08:06 
 qsort   Max Alekseyev   07 Oct 2002 11:47:32 
 RE: qsort   Anatoly Svishev   08 Oct 2002 23:20:25 
 qsort   Max Alekseyev   08 Oct 2002 20:12:28 
 qsort   Ianos Gnatiuc   08 Oct 2002 23:59:20 
 qsort   Ianos Gnatiuc   05 Oct 2002 17:21:13 
 RE: qsort   Anatoly Svishev   07 Oct 2002 00:12:44 
 qsort   Ianos Gnatiuc   07 Oct 2002 15:27:25 
 Re: qsort   Alexander Chislov   08 Oct 2002 19:12:52 
 qsort   Ianos Gnatiuc   09 Oct 2002 19:33:15 
Архивное /ru.algorithms/18133da174e5.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional