30/09/2018, 22:03

Sắp xếp mảng dùng quick_sort

mn xem giúp em bài này với, hàm quick_sort nó không chạy.

using namespace std;
void init(int a[], int n){
	cout<<"
 Nhap gtri: ";
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
}
void in(int a[], int n){
	for(int i=0;i<n;i++){
		cout<<" "<<a[i];
	}
}
void swap(int &a, int &b){
	int temp=a;
	a=b;
	b=temp;
}
void partion(int a[], int l, int r){
	int i=l,j=r;
	int mid=a[(l+r)/2];
	while(i<=j){
		while(a[i] < mid) i++;
		while(a[j] > mid) j--;
		if(i<=j) {
			swap(a[i], a[j]);
			i++;
			i--;
		}
		
	}
	if(l<j) partion(a,l,j);
	if(i<r)  partion(a,i,r);
}
void quick_sort(int a[], int n){
	partion (a,0,n-1);
}
int main(){
	int a[100], n;
	cin>>n;
	init(a,n);	in(a,n);
	quick_sort(a,n); in(a,n);
}

Em cảm ơn ạ.

Quốc Hùng viết 00:06 ngày 01/10/2018

bạn truyền dữ liệu bằng tham chiếu, chứ truyền tham trị thì nó không chạy đc đâu

Tao Không Ngu. viết 00:10 ngày 01/10/2018

This post was flagged by the community and is temporarily hidden.

... viết 00:17 ngày 01/10/2018

debug lại báo sai ở dòng int i=l,j=r;
t k hiểu!!!

Gió viết 00:09 ngày 01/10/2018

Xem lại biến sau swap

bau nguyen viết 00:09 ngày 01/10/2018
if(l&lt;j) partion(a,l,j);
if(i&lt;r)  partion(a,i,r);

}
void quick_sort(int a[], int n){
partion (a,0,n-1);

tham số thực trong lời gọi hàm sai nè bạn

Bài liên quan
0