*Ý tưởng:
Xuất phát từ cuối dãy, đổi chỗ
các cặp phần tử kế cận để đưa phần tử nhỏ hơn trong cặp phần tử đó về vị trí
đúng đầu dãy hiện hành, sau đó sẽ không xét đến nó ở
bước tiếp theo, do vậy ở lần xử lý thứ i sẽ có vị trí đầu dãy là i. Lặp lại xử
lý trên cho đến khi không còn cặp phần tử nào để xét.
Giải thuật
Bước 1:
i = 1;
Bước 2:
j = N;
Trong khi (j
> i)
thực hiện:
Nếu a[j]<a[j-1]:
Hoán vị a[j] và a[j-1]
j = j-1;
Bước 3:
i = i+1;
Nếu i
>N-1: Hết dãy. Dừng
Ngược lại: Lặp lại Bước 2.
Cài đặt
void
BubleSort(int a[], int N )
{
int i,
j;
for (i = 0 ; i<N-1 ; i++)
for (j =N-1; j >i ; j --)
for (i = 0 ; i<N-1 ; i++)
for (j =N-1; j >i ; j --)
{
if(a[j]< a[j-1])
Hoanvi(a[j],a[j-1]);
if(a[j]< a[j-1])
Hoanvi(a[j],a[j-1]);
}
}
0 comments:
Post a Comment