30/09/2018, 16:29

Sau khi đã sắp xếp mảng theo thứ tự tăng(giảm) dần thì làm thế nào để tìm kiếm được phần tử và vị trí ở mảng khi chưa sắp xếp?

anh chị cho em hỏi sau khi đã sắp xếp mảng theo thứ tự tăng(giảm) dần thì làm thế nào để tìm kiếm được phần tử và vị trí ở mảng khi chưa sắp xếp. Ai giúp em với ạ.
Cảm ơn nhiều!!

Nguyễn Minh Dũng viết 18:33 ngày 30/09/2018

anh chị cho em hỏi sau khi đã sắp xếp mảng bằng theo thứ tự tăng(giảm) dần thì làm thế nào để tìm kiếm được phần tử và vị trí ở mảng khi chưa sắp xếp

Tại sao em lại cần tìm vị trí ở mảng chưa sắp xếp? Anh hỏi vậy vì anh chưa hiểu câu hỏi lắm.

Vinh Nguyễn viết 18:30 ngày 30/09/2018

tức là ban đầu em nhập 1 mảng lung tung các phần tử ,sau đó em thực hiện sắp xếp theo thứ tự tăng dần mảng vưa nhập. Nhưng khi em tìm kiếm vị trí của 1 phần tử trong mảng thì nó chỉ tìm kiếm vị trí ở mảng đã sắp xếp… mà câu hỏi của em là tìm kiếm vị trí ở mảng khi chưa sắp xếp.

Anh giúp em với

Sáng Béo viết 18:45 ngày 30/09/2018

có 2 cách, làm 1 mảng 2 chiều, hoặc làm 2 mảng 1 chiều.
mình ko biết có cách nào tối ưu ko nữa.

Vinh Nguyễn viết 18:40 ngày 30/09/2018

làm 2 mảng 1 chiều tức là dùng 1 mảng để lưu nhưng phần tử khi vừa nhập sao bạn ???

Tuấn Nguyễn viết 18:38 ngày 30/09/2018

Em gán mảng 1 chiều qua 1 mảng tạm. Sắp xếp trên đó và tìm kiếm thì ở mảng cũ.

Sáng Béo viết 18:45 ngày 30/09/2018

không, mà là lưu chỉ số.
ví dụ mảng a là mảng phần tử sắp xếp, mảng b là chỉ số:

a={2,3,1,4,3,5}
b={1,2,3,4,5,6}

sau khi sắp xếp:

a={1,2,3,3,4,5}
b={3,1,2,5,4,6}

=> chỉ số của phần tử a[i]b[i]

không biết cách của mình có hơi phức tạp ko nữa.

Tuấn Nguyễn viết 18:42 ngày 30/09/2018

Ko cần làm mảng 2 chiều đâu. Phức tạp ra đó htwap

Sáng Béo viết 18:30 ngày 30/09/2018

vâng. e cũng nghĩ thế.
với lại e cũng chưa tìm hiểu cái sắp xếp nổi bọt nữa. TT.TT

Tuấn Nguyễn viết 18:40 ngày 30/09/2018

Bubble Sort là thuật toán sắp xếp chậm nhất nhì trong các thuật . Ý tưởng thì em
tìm hiểu thêm ở đây

vi.wikipedia.org

Sắp xếp nổi bọt

Sắp xếp nổi bọt (tiếng Anh: bubble sort) là một thuật toán sắp xếp đơn giản, với thao tác cơ bản là so sánh hai phần tử kề nhau, nếu chúng chưa đứng đúng thứ tự thì đổi chỗ (swap). Có thể tiến hành từ trên xuống (bên trái sang) hoặc từ dưới lên (bên phải sang). Sắp xếp nổi bọt còn có tên là sắp xếp bằng so sánh trực tiếp. Nó sử dụng phép so sánh các phần tử nên là một giải thuật sắp xếp kiểu so sánh. Giả sử dãy cần sắp xếp có n phần tử. Khi tiến hành từ trên xuống, ta so sánh hai phần tử đầu, nế...

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])
        { 
            int temp = a[j]; 
           a[j] = a[j-1];
           a[j - 1] = temp;
        }
    }
  }  
}
Vinh Nguyễn viết 18:40 ngày 30/09/2018

anh ơi làm thế nào để gán mảng 1 chiều qua 1 mảng tạm vậy?? em hơi khó hiểu không biết bắt đầu từ đâu? không lẽ gán như các biến bình thường ạ?

Tuấn Nguyễn viết 18:45 ngày 30/09/2018

Mảng thì ko thể gán như bình thường được.
Muốn gán thì phải duyệt vòng lặp gán từng phần tử qua từng phần tử!
VD:

int a[5] = {1,2,3,4,5};
int temp[5];
for(int i = 0; i < n; i++)
{
   temp[i] = a[i];
}
Vinh Nguyễn viết 18:35 ngày 30/09/2018

chỉ cần vòng lặp

for(int i = 0; i < n; i++)
{
temp[i] = a[i];
}

là mảng temp[5] sẽ tự nhận hết các phần tử của mảng a[5] vào sao anh??

Tuấn Nguyễn viết 18:31 ngày 30/09/2018

ừ . Mình gán từng phần tử qua mảng a qua mà . Giong như em kiểm tra mà nhìn bài bạn ấy. Không bỏ sót 1 chữ nào

Vinh Nguyễn viết 18:35 ngày 30/09/2018

hay qúa nhưng cái kiến thức này anh học được ở đâu vậy anh?? em đọc ebook mà chỉ có lý thuyết không, không có cuốn nào dạy mấy cái này cả
cảm ơn anh nhiều

Nguyễn Minh Dũng viết 18:37 ngày 30/09/2018

Khi muốn thảo luận một nhánh của vấn đề, mọi người dùng tính năng reply as linked topic.

I moved 5 posts to an existing topic: Tiếp tục topic bubble sort

Bài liên quan
0