Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
Sunday, December 7, 2014

Chúng ta tưởng tượng rằng các mẩu tin được lưu trong một mảng dọc, qua quá trình sắp, mẩu tin nào có khóa “nhẹ” sẽ được nổi lên trên. Chúng ta duyệt tòan mảng, từ dưới lên trên. Nếu hai phần tử ở cạnh nhau mà không đúng thứ tự tức là nếu phần tử “nhẹ hơn” lại nằm dưới thì phải cho nó “nổi lên” bằng cách đổi chỗ hai phần tử này cho nhau. Cụ thể là:

        • Bước 1: Xét các phần tử từ a[n] đến a[2], với mỗi phần tử a[j], so sánh khoá của nó với khoá của phần tử a[j-1] đứng ngay trước nó. Nếu khoá của a[j] nhỏ hơn khoá của a[j-1] thì hoán đổi a[j] và a[j-1] cho nhau.
       • Bước 2: Xét các phần tử từ a[n] đến a[3], và làm tương tự như trên.
       • Sau n-1 bước thì kết thúc.

Bài Giải



/*
Name: Thuat toan Bubble Sort
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/

#include<conio.h>
#include<stdio.h>
#include<iostream>
using namespace std;

void swap(int &a, int &b)
{
 int temp=a;
 a=b;
 b=temp;
}

void BubbleSort(int a[], int n)
{
 for(int i=0; i<n-1;i++)
  for(int j=n-1;j>i;j--)
  {
   if(a[j]<a[j-1])
    swap(a[j],a[j-1]);
    }
}

main()
{
 int n=8;
 int a[]={1,5,3,4,9,7,3,4};

 for(int i=0;i<n;i++)
  cout<<a[i]<<"  ";

 cout<<endl<<"Bubble Sort: "<<endl;

 BubbleSort(a,n);
 for(int i=0;i<n;i++)
  cout<<a[i]<<"  ";

 getch();
 return 0;
}


0 comments:

Post a Comment

Popular Posts