PDA

View Full Version : Ai chỉ tui thuật toán sắp xếp chèn nhị phân...



copcop
16-04-2004, 20:26
Các bạn giúp mình về thuật toán sắp xếp chèn nhị phân đi (Binary Insertion Sort). Chi phí của thuật toán này như thế nào?... có cả source càng tốt! Và làm thế nào để dùng thuật toán này sắp xếp đến 30000 phần tử mảng các số nguyên! .....

mù_chữ_Java
18-04-2004, 10:24
http://www.brpreiss.com/books/opus4/html/page491.html
http://www.dcc.uchile.cl/~rbaeza/handbook/algs/4/412c.sort.c.html
...

minhlazy
31-05-2004, 23:42
Có thể nói rõ hơn ko.

imweasel
01-06-2004, 06:08
2 cái link của java đưa ra là ngon rồi, cái thứ 2 có code đó còn gì, còn cái thứ nhất thì thx, quyển sách này khá hay, được giới sinh viên CS đánh giá cao

bichduyen_nt
08-06-2004, 18:36
Bạn muốn sử dụng ngôn ngữ lập trình nào vậy?
Sao ma` đề của bạn giống đề của thầy tui cho quá vậy, cái số 30 000 phần tử đó lợi hại lắm đó, vì bạn sẽ phải để ý đến dung lượng của chương trình, thường thì trong C là khoảng 64K, mà 30 000 phần tử kiểu int thì hết cha nó 60K rồi (30 000 x 2 byte), nên bạn không thể xử lý nổi chương trình khi mà chỉ còn chừa lại có 4K, bạn phải khao báo kiểu mảng động thôi, nếu không là chương trình của bạn sẽ có chức năng mới là làm treo máy, hi hi

copcop
23-06-2004, 23:07
Mình sử dụng ngôn ngữ C (BOrland C++ 3.1) ma không hiểu tại sao thuật toán sắp xếp nào cũng sắp được đến 30000 pt, chỉ có Binary insertion sort và merge sort là sắp không nổi thôi! Bạn nào có cách khắc phục thì giúp với!
Nhân tiện, bạn nào biết cách khử đệ qui của phương pháp Merge sort thì giúp luôn.... (*_^)

hakiru
24-06-2004, 06:08
tại sao bạn không vào website tinhocnhatruong.com . Ở đó có khá nhiều bài mẫu

Xmen
01-07-2004, 14:39
them 1 gop y: neu ban o tpHCM thi den tiem sach gan truong Khoa hoc tu nhien mua quuyen Nhap mon cau truc du lieu tac gia: Duong Anh Duc, day la giao trinh chinh khoa cua bon minh, thay kha hay va chi tiet.

buon_vi_dep_2003
05-07-2004, 08:33
void BinaryInsertion_Sort (int a[],int n){
for (int i=1;i<n;i++){
int x=a[i],left=0,right=i-1;
while (left<=right) {
int mid=(left+right)/2;
if (x<a[mid]) right=mid-1;
else left=mid+1;
}
for (int j=i-1;j>=left;j--)
a[j+1]=a[j];
a[left]=x;
}
}