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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Kommander Bomber                     2:5059/26.17   24 Dec 2002  20:46:10
 To : Sergey Panfilov
 Subject : Re: быстpая соpтиpовка
 -------------------------------------------------------------------------------- 
 
 
 Привет, Alexx!
 
  AO> помогите плиз, а то вpемени мало. нyжно пpосто-напpосто отсоpтиpовать
  AO> массив двyхбайтных чисел, но вpемя соpтиpовки кpитично
  AO> (микpоконтpоллеpная система).
 
  Hадеюсь, по исходнику поймешь как работает. Основная функция - sort.
 
 === Здесь начинается src.c ===
 typedef unsigned short uint16;
 typedef long int32;
 typedef short int16;
 
 typedef int16 sizer;
 /*typedef int32 sizer;*/
 
 void sort1(uint16 *mas, sizer razm) {
 uint16 swp, prefix;
 sizer i,j;
 sizer Pakety[128];
 
  if (razm>2/*или не 2, а больше, тогда оставшееся отработать отдельно,
     например использовать quicksort для razm, удовлетворяющих
     условию 256+2*razm>razm*log(2,razm)*/) {
     prefix=mas[0]&0xff80;
     for (i=0; i<128; i++) Pakety[i]=0;
     for (i=0; i<razm; i++) Pakety[mas[i]&0x7f]++;
     j=0;
     for (i=0; i<128; i++)
         while (Pakety[i]--)
               mas[j++]=prefix|((uint16)i);
  } else
    if (mas[0]>mas[1]) {
       swp=mas[0];mas[0]=mas[1];mas[1]=swp;
    }
 }
 
 uint16 *sort(uint16 *Massiv, sizer Razmer) {
  sizer Pakety[512],i,t;
  uint16 *Massiv1;
   for (i=0; i<512; i++) Pakety[i]=0;
   for (i=0; i<Razmer; i++) Pakety[Massiv[i]>>7]++;
   for (i=1; i<512; i++) Pakety[i]+=Pakety[i-1];
   Massiv1=(uint16 *)malloc(Razmer*sizeof(uint16));
   for (i=0; i<Razmer; i++)
       Massiv1[--Pakety[Massiv[i]>>7]]=Massiv[i];
   for (i=0; i<511; i++)
       if ((t=Pakety[i+1]-Pakety[i])>1)
          sort1(&Massiv1[Pakety[i]], t);
   if ((t=Razmer-Pakety[511])>1)
      sort1(&Massiv1[Pakety[i]], t);
 
   return Massiv1;
 }
 === А здесь src.c кончается ===
 
 --- GoldED/W32 3.0.1-asa8
  * Origin: -or- (2:5059/26.17)
 
 

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

 Тема:    Автор:    Дата:  
 быстpая соpтиpовка   Alexx Ovodov   23 Dec 2002 23:20:59 
 быстpая соpтиpовка   Alexander Shashkevich   24 Dec 2002 11:19:50 
 быстpая соpтиpовка   Alexx Ovodov   25 Dec 2002 09:05:42 
 Re: быстpая соpтиpовка   Nick Kovaliov   25 Dec 2002 11:29:25 
 Re: быстpая соpтиpовка   Andrew Ezhguroff   24 Dec 2002 15:02:51 
 Re: быстpая соpтиpовка   Oleg   24 Dec 2002 15:10:58 
 Re: быстpая соpтиpовка   Andrew Ezhguroff   25 Dec 2002 04:03:51 
 Re: быстpая соpтиpовка   Sergey Andrianov   26 Dec 2002 23:58:08 
 быстpая соpтиpовка   Alexx Ovodov   25 Dec 2002 09:11:37 
 Re: быстpая соpтиpовка   Oleg Khovayko   26 Dec 2002 09:04:23 
 Re: быстpая соpтиpовка   Oleg Khovayko   26 Dec 2002 09:47:31 
 Re: быстpая соpтиpовка   Nick Kovaliov   26 Dec 2002 11:07:56 
 Re: быстpая соpтиpовка   Oleg I. Khovayko   26 Dec 2002 18:28:16 
 Re: быстpая соpтиpовка   Nick Kovaliov   30 Dec 2002 13:07:49 
 Re: быстpая соpтиpовка   Andrew Ezhguroff   27 Dec 2002 05:46:39 
 Re: быстpая соpтиpовка   Oleg Khovayko   27 Dec 2002 07:07:41 
 Re: быстpая соpтиpовка   Sergey Andrianov   26 Dec 2002 23:57:26 
 Re: быстpая соpтиpовка   Kommander Bomber   24 Dec 2002 20:46:10 
 быстpая соpтиpовка   Maxim Lanovoy   25 Dec 2002 09:52:46 
 Re: быстpая соpтиpовка   Artur Mogozov   24 Dec 2002 23:06:06 
 Re: быстpая соpтиpовка   Protopopov Michael   25 Dec 2002 11:11:20 
 Re: быстpая соpтиpовка   Protopopov Michael   25 Dec 2002 11:11:21 
Архивное /ru.algorithms/33783e08c492.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional