Thursday, March 3, 2011

Оруулан эрэмбэлэх арга (Insertion Sort)

Энэ аргыг багтаан эрэмбэлэх арга, заримдаа шургуулан эрэмбэлэх арга ч гэж нэрлэдэг. Оруулан эрэмбэлэх арга нь сонгон эрэмбэлэх аргатай нилээн төсөөтэй бөгөөд үндсэн үйлдэл нь эрэмбэлэгдсэн массивт эрэмбэлэлтийг алдагдуулахгүйгээр шинэ элемент оруулах явдал юм. Өөрөөр хэлбэл эрэмбэлэгдсэн хэсгийн шинэ элементээс их элементүүдийг 1 байрлал баруун тийш шилжүүлэх байдлаар орвол зохих байрлалыг чөлөөлж өгдөг.
Жишээ. N элементтэй бүхэл тоон массивыг өсөхөөр эрмбэлэе.

1. Си хэл
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, a[100], i, j, temp, k;
printf(" n = ");
scanf("%d", &n);
for(i=0; i<n; i++) {
printf(" a[%d] = ", i);
scanf("%d", &a[i]);
}
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(a[i] > a[j]) {
temp = a[j];
for(k=j; k>i; k--)
a[k] = a[k-1];
a[i] = temp;
}
printf(" Khariu:");
for(i=0; i<n; i++)
printf(" %d", a[i]);
system("pause");
}

2. Паскаль хэл
Program InsertionSort;
var
n, i, j, temp, k: integer;
a: array[1..100] of integer;
begin
Write(' n = ');
Read(n);
for i:=1 to n do begin
Write(' a[',i,'] = ');
Read(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i] > a[j] then begin
temp := a[j];
for k:=j downto i+1 do a[k] := a[k-1];
a[i] := temp;
end;
Write(' Khariu:');
for i:=1 to n do
Write(' ', a[i]);
end.

3 comments:

  1. bi tanaas yum asuuh gsn yumaa mobile programchlaliin talaar. Ta nadad mail haygaa ogooch. Minii mail hayag munkhuu_sezds@yahoo.com

    ReplyDelete
  2. энэ хичээлээр дэлгэрэнгүй лекц тавьж бололх уу?

    ReplyDelete
  3. жаахан дэлгэрэнгүй олон жишээ тавиж өгвөл их гоё ойлгомжтой болох юм бн гоё сайт бн

    ReplyDelete