2011/10/23

Хөвөх эрэмбэлэлт (Bubble Sort) Х Лисп хэл Х Си хэл

За Лисп хэлийг оролдож үзэж байна. Тэгээд энэ хөвөх эрэмбэлэлтийг Лисп дээр хийж үзэхээр шийдлээ. Хөвөх эрэмбэлэлт бол хамгийн энгийн эрэмбэлэлт. Үндсэн санаа нь бол хөөс хөвөх зарчимтай адил. Усан дотор хөнгөхөнүүд нь дээш хөөрч, хүнд нь доошилдогтой адил жагсаалтын бага элементүүд аажмаар дээшилдэг. Үндсэн хийж байгаа үйлдэл нь зэрэгцээ элементүүдийг шалгаад байрыг нь солих замаар явна.

Хөвөх эрэмбэлэлт нь туулай яст мэлхийн төрлийн эрэмбэлэлт. Энэ төрлийн эрэмбэлэлт нь нэг төрлийн элементүүд нь хурдан байрандаа орж үлдсэн нь удаан байрандаа ордог. Хөвөх эрэмбэлэлт дээр бол багаас их рүү эрэмбэлж байгаа тохиолдолд их элементүүд нь хурдан байрандаа орж бага элементүүд нь удаан байрандаа ордог. Өөрөөр хэлбэл их элементүүдийг зөв байранд нь оруулахад чиглэгдсэн гэсэн үг. Доор хөдөлгөөнт жишээ үзүүлсэн байна.

Псевдо код нь:

procedure bubbleSort( A : list of sortable items )
  repeat
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      if A[i-1] > A[i] then
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
end procedure
 
Нэг иймэрхүү байх нь. За тэгвэл Си хэл дээрх ингэж бичлээ. 

 
Гаралт нь:
 За тэгвэл одоо Лисп хэл дээр бичиж үзье. 
 
 
Гаралт нь:
 
Лисп хэлний бичиглэлийг харж байгаа байх. Си-гээс хоёр дахин бага бичлэгтэй байгаа 
биз. Дараа нь Сонголтын Эрэмбэлэлтийн тухай оруулнаа. 
 

3 comments:

  1. void quicksort(int a[], int L, int R)
    { int i , j , w, x, k;
    i=L; j=R; k=(L+R)/2;
    x=a[k];
    do{
    while( a[i] x) j= j-1;
    if( i<=j)
    { w=a[i];
    a[i]=w;
    i=i+1;
    j=j-1;
    }
    }
    while( i<=j);
    if( Li) quicksort( a,i,R);
    }
    hamgiin shildeg algorithm bgamda

    ReplyDelete
  2. Хурдан Эрэмбэлэлтийн тухай удахгүй оруулнаа.

    ReplyDelete
  3. http://en.wikipedia.org/wiki/Sorting_algorithm

    ReplyDelete