Lỗi Vector không sort dữ liệu trong C++

Chào mọi người ạ, tình hình là mình mới học cái vector mà còn có nhiều chỗ hơi bị rối. Mong mọi người có thể giúp mình ạ.
Yêu cầu: Mình muốn tạo ra chuỗi số và khi người dùng nhập số lượng số, thì mình sẽ random tạo ra các số và sau đó lượng số sẽ được xắp sếp theo thứ tự từ bé đến lớn.
Lỗi: Sau khi nhập xong thì các số sẽ được tạo ra nhưng lại không theo thứ tự.
Cảm ơn mọi người nhiều ạ

#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std; 
// Khai báo hàm sort
void bubbleSort(vector<int>vectorData);
int main ()
{

	int dataItems, choice;
	
	cout << "Enter How many Items: "; cin >> dataItems;
	vector <int> vectorData(dataItems);
	srand(99);
	for (int i = 0; i <= (vectorData.size() -1); i++)
	{
		vectorData[i] = rand(); 
	}
	bubbleSort(vectorData);	
	for (int i = 0; i <=(vectorData.size() -1); i++) {
			
			cout << vectorData.at(i) << " ";
		}	
		
}
void bubbleSort(vector<int>vectorData)
{
	int Flag,temp; 
	for (int i = 0; i<= (vectorData.size() -1); i++)
	{
		Flag = 0; 
		for (int j = 0; j <=(vectorData.size() -1); i++)
		{
				if (vectorData[j]>vectorData[j+1])
		{
			temp = vectorData[j];
			vectorData[j] = vectorData[j+1];
			vectorData[j+1] =temp;
			Flag =1;
		}
		if (Flag==0)
		break;
		}
	
	}
}

Truyền tham trị thì toạch rồi :smiley:

3 Likes

phải truyền tham chiếu (&)

void bubbleSort(vector<int>& vectorData)
3 Likes

Mình cũng có thử với tham chiếu nhưng nó vẫn vậy ạ. o.O

1 Like

sửa dấu & 2 chỗ lận mà bạn sửa mấy chỗ

3 Likes


2 ạ

1 Like

vậy là cái bubbleSort có vấn đề rồi :V

for (int j = 0; j <=(vectorData.size() -1); i++)

vòng lặp cho j sao lại tăng i++ thế kia :V

2 Likes

Cảm ơn bạn, mình code nhầm :sweat_smile:. Mình đã chỉnh lại nhưng sao nó vẫn vậy nhỉ

đọc lại thuật toán bubble sort đi, khi nào cần break, đặt cái break kia có đúng chỗ chưa :V đặt ở trong vòng lặp biến j hay vòng lặp biến i :V canh chỉnh cái indentation lại cho đúng hàng đúng lối ko thì ko nhìn ra lỗi :V

à còn lỗi chỗ biến j có truy cập a[j+1], mà j chạy tới a.size() - 1 khi đó a[j+1] sẽ là a[a.size()] vậy có đúng ko :V

3 Likes

à, mình edit được rồi, cảm ơn bạn ạ :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?