PDA

View Full Version : Sắp xếp bằng lựa chọn (selection sort)



lehang_gb1
02-01-2010, 16:49
Các bạn hãy nêu thuật toán và chương trình sắp xếp thuật toán bằng lựa chọn (selection sort) giúp mình!

lehang_gb1
07-01-2010, 08:45
Cụ thể của phương pháp này là: Chọn phần tử nhỏ nhất trong dãy nguồn, xếp nó vào vị trí đầu tiên trong dãy đích. Đây là phần tử thứ nhất và cũng là phần tử cuối cùng của dãy đích. Chọn phần tử nhỏ nhất trong dãy nguồn còn lại, đây là phần tử nhỏ thứ hai, xếp nó vào vị trí thứ hai và cũng là vị trí cuối của dãy đích lúc này.
Lặp lại việc này cho đến khi hết dãy nguồn.
Bước 1: - Chọn phần tử bé nhất từ dãy nguồn
- Đổi chỗ cho phần tử A[1]
Bước i:
- Chọn phần tử bé nhất từ dãy nguồn còn lại là a[i],a[i+1],...,a[n]
- Đổi chỗ cho a[i].
---------------------------------Bài viết đã được trộn ---------------------------------
Thủ tục chi tiết:
For i:=1 to n-1 do
Begin
"Chọn phần tử min của dãy a[i], a[i+1],.....,a[n]"
"Đổi chỗ cho a[i]"
end;

nirvanat
14-01-2010, 16:41
Hình như là thế này
For i:=1 to n do
For j:=i to n-1 to
If a[i]<a[j] then
begin
a[i]:=tg;
a[i]:=a[j];
a[j]:=tg;
end;

kivophong1987
15-03-2010, 13:52
hepl me
toi can tro giup trong lap trinh jave ve giai thuat selection sort

mini_bestboy
15-03-2010, 20:20
Thế Selection Sort O(N^2) àh ?
Mà Lehang_gb sao vừa hỏi vừa trả lời là sao nhỉ :-?

canhat_dpqn
12-08-2012, 11:16
Hình như là thế này
For i:=1 to n do
For j:=i to n-1 to
If a[i]<a[j] then
begin
a[i]:=tg;
a[i]:=a[j];
a[j]:=tg;
end;

The nay la sap xep kieu lua chon ah. do chi la doi cho truc tiep thoi.
Voi lai cai vong lap + hoan vi cua ban cung viet sai nua
day moi la sap lua chon ne( cu phap cua pascal minh ko chuyen, co j thong cam):
For i:=1 to n-1 do
k=:i;
For j:=i+1 to n to
If a[k]<a[j] then
begin
k:=j;
end;
tg:=a[i];
a[i]:=a[k];
a[k]:=tg;

AVATARBLACK
19-08-2012, 22:24
Các bạn hãy nêu thuật toán và chương trình sắp xếp thuật toán bằng lựa chọn (selection sort) giúp mình!

Hãy gõ & test code dưới đây mô tả và thực thi Sele. Sort:
uses crt;
const n=7;
var a:Array[1..n] of Integer;
min, vt,i,j:Integer;
Begin clrscr;
{Doan Prog. nhap lieu}
For i:=1 to n do
Begin
Write('Nhap gia tri phan tu thu a[',i,']=');
Readln(a[i]);
End;

{Doan sap xep nho th_toan Selection Sort}
For i:=1 to n do
Begin
min:=a[n]; vt:=n;
For j:=i to n do
If a[j]<min Then
Begin
min:=a[j];
vt:=j;
End;
a[vt]:=a[i];
a[i]:=min;
End;

{Xuat ket qua}
Writeln('Day vua nhap da sap xep tang nho th_toan Lua chon:');
For i:=1 to n do
Write(a[i]:5); Writeln;
Write('Done!');
Readln
End.

nino
19-08-2012, 22:36
khổ thiệt, gần 3 năm trời mới có người trả lời

trung__123
06-06-2013, 22:33
ĐAng chuẩn bị thi tốt nghiệp. Thế này thì .... :(

hao0091998
02-07-2013, 21:16
hỏi thật các bác trước khi đưa code có test trên máy chưa???
của mình đây .lớn dần nhé, ai muốn nhỏ dần thì đổi dấu
var i,j,tam,N:longint;
A:array[1..100]of longint;
begin
clrscr;
write('nhap so phan tu:'); readln(N);
for i:=1 to N do
begin
write('nhap phan tu thu ',i,': ');
readln(A[i]);
end;
for i:=1 to N-1 do
for j:=i+1 to N do
if A[i]>A[j] then
begin
tam:=A[i];
A[i]:=A[j];
A[j]:=tam;
end;
for i:=1 to N do write(A[i],' ');
readln;
end.