Recent Posts

Code C/C++: Thuật toán sắp xếp nổi bọt (Bubble Sort Algorithm)

-

Ý tưởng thuật toán: xuất phát từ phần tử cuối danh sách ta tiến hành so sánh với phần tử bên trái của nó. Nếu phần tử đang xét có khóa nhỏ hơn phần tử bên trái của nó ta tiến đưa nó về bên trái của dãy bằng cách hoán vị với phần tử bên trái của nó. Tiếp tục thực hiện như thế đối với bài toán có n phần tử thì sau n –1 bước ta thu được danh sách tăng dần.
Ví dụ: sử dụng thuật toán Bubble Sort sắp xếp dãy số {3, 10, 4, 6, 2, 6, 15, 3, 9,7} theo thứ tự tăng dần.

Sau 9 bước lặp ta thu được dãy đã được sắp xếp: {2, 3, 3, 4, 6, 6, 7, 9, 10, 15}
Cài đặt chương trình:
#include<math.h>
#include<iostream>
#include<conio.h>
#define max 100
using namespace std;
//Nhập mảng
void NhapMang(int A[],int n){
for(int i=0; i<n;  i++) {
cout<<"nhap Phan tu thu A["<<i<<"] =";
cin>>A[i];
}
}
//Xuất mảng
void XuatMang(int A[],int n){
cout<<endl;
for(int i=0; i<n;  i++)
cout<<A[i]<<"\t";
//Hoán vị 2 phần tử
void Swap(int &a,int &b){
int temp = a;
a = b;
b =  temp;
}
//Sắp xếp các phần tử theo Bubble Sort
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-1],A[j]);
}
//Chương trình chính
int main(){
int A[max],n;
cout<<"Nhap so phan tu:";
cin>>n;
NhapMang(A,n);
cout<<"\nMang vua nhap la:";
XuatMang(A,n);
cout<<endl;
BubbleSort(A,n);
cout<<"\nMang vua sap xep la:";
XuatMang(A,n);
getch();
return 0;
}
Kết quả chương trình:

Từ khóa: Sắp xếp, nổi bọt, Bubble sort, thuật toán.

Related Post:

  • Code C#: Ràng buộc một TabControl đến nguồn dữ liệu<Window x:Class="TabControlUsingItemTemplate.Window1"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:src="clr-namespace:TabControlUsingItemTemplate"    Title="TabControlUsingItemTemplate" Height="250" Width="250">  <Window.Reso… Read More
  • Mật mã học: Mật mã hóa KHÓA CÔNG KHAI (Khóa bất đối xứng)Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật m… Read More
  • Code C#: Chuyển đổi văn bản sang hình học<Window x:Class="GlyphExamples.GlyphClipping"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    Title="Glyph Clipping" Height="400" Width="360">    <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Width="80">    &nb… Read More
  • Code C#: Thêm các item (mục) vào Combo boxusing System;using System.Drawing;using System.Windows.Forms;public class Select : Form {  private Button draw = new Button();  private ComboBox color = new ComboBox();  public Select( ) {    draw.Text = "Draw";    color.Text = "Choose a color";    Size = new Size(400,240);    int w = 20;    draw.Locatio… Read More
  • ASP.NET: Tạo ra các file XML từ Cơ sở dữ liệu SQL<%@ Page Language="VB" Debug="true" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.XML" %><%@ Import Namespace="System.Data.SQLClient" %><script language="VB" runat="server">Sub Page_Load(Source as Object, E as EventArgs)Dim strCon as string = "Server=127.0.0.1;uid=sa;pwd=123;Database=Northwind;"Dim strSQL as string =… Read More
  • Mật mã học: Mật mã Caesar (Mã hóa Caesar)Trong mật mã học, mật mã Caesar, còn gọi là mật mã dịch chuyển, là một trong những mật mã đơn giản và được biết đến nhiều nhất. Mật mã là một dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được thay thế bằng một ký tự cách nó một đoạn trong bảng chữ cái để tạo thành bản mã. Vĩ dụ, nếu độ dịch là 3, A sẽ được thay bằng B, Ă sẽ được thay bằng C và cứ thế đến… Read More




Klik untuk melihat kode: :) =( :s :D :-D ^:D ^o^ 7:( :Q :p T_T @@, :-a :W *fck* x@