chào mọi người ạ, em đang cài đặt một thuật toán Quick_sort để sắp xếp một dãy số, với trị giữa là median của dãy số đó. Tuy nhiên sau khi viết hàm findMedian thì code của em không chạy được nữa(mặc dù compile không báo lỗi).
#include <iostream>
using namespace std;
void Swap(int &a, int &b){
int temp = a;
a = b;
b =temp;
}
int findMedian(int a[], int r, int &x){
if(r%2 != 0){
x = a[r/2];
return x;
}
else{
x = (a[(r-1)/2]+a[r/2])/2;
return x;
}
}
void QuickSort(int a[], int l, int r){
int i, j;
int x;
findMedian(a,r,x);
i = l; j = r;
do{
while(a[i] < x) i++;
while(a[j] > x) j--;
if(i <= j){
Swap(a[i], a[j]);
i++; j--;
}
}while(i < j);
if(l < j)
QuickSort(a,l,j);
if(i < r)
QuickSort(a,i,r);
}
void Input(int a[], int n){
for(int i = 0; i < n; i++) {
cout << "a[" << i << "]: ";
cin >> a[i];
}
}
void Output(int a[],int l, int n) {
for(int i = 0; i < n; i++) {
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"Tri giua: "<<a[n/2];
}
int main() {
int a[10];
int n;
while(1) {
cout << "Nhap n:";
cin >> n;
Input(a, n);
QuickSort(a,0,n-1);
Output(a,0,n);
cout << endl;
}
return 0;
}
em mong mọi người xem giúp code sai chỗ nào ạ, em xin cảm ơn mn rất nhiều!