Breaking News
Loading...
Tuesday, July 9, 2013

Thuật toán SelectionSort

7/09/2013 10:53:00 PM

*Ý tưởng:

Chọn phần tử nhỏ nhất trong N phần tử ban đầu, đưa phần tử này về vị trí đúng là đầu dãy hiện hành; lúc này dãy hiện hành chỉ còn N-1 phần tử cần sắp xếp, bắt đầu từ vị trí thứ 2; lặp lại quá trình trên cho dãy hiện hành... đến khi dãy hiện hành chỉ còn 1 phần tử.

Dãy ban đầu có N phần tử, vậy tóm tắt ý tưởng giải thuật là thực hiện N-1 lượt việc đưa phần tử nhỏ nhất trong dãy hiện hành về vị trí đúng ở đầu dãy.

*Giải thuật

Bước 1:   i = 1;
Bước 2: Tìm phần tử a[vtmin] nhỏ nhất trong dãy hiện hành từ  a[i] đến a[N]
Bước 3:  Hoán vị a[vtmin] và a[i]
Bước 4:
             i = i+1
          Nếu  i < N thì lặp lại Bước 2
           Ngược lại: Dừng.
Cài đặt
 void SelectionSort(int a[],int N )
   int  vtmin;
   for(int  i=0; i<N-1 ; i++)
   {   vtmin = i;
  for(int j = i+1; j <N ; j++)
           {
  if (a[j ] < a[vtmin])
  min=j;
          }
  Hoanvi(a[min], a[i]);  }
}
void Hoanvi(int &a, int &b)
{  int tam=a;
a=b;
  b=tam;
}

0 comments:

Post a Comment

 
Toggle Footer