mình muốn sắp xếp mảng[10] kiểu struct Sinhvien theo kiểu sắp xếp quicksort , tiêu chí là điểm average, nhưng không hiểu tại sao bị lỗi trong khi nếu sắp xếp 1 mảng int bình thường thì không bị gì.
dưới đây là code:
#include <conio.h>
#include <stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct Sinhvien
{
char IDclass[40];
char IDstudent[40];
char Name[40];
char Date[40];
int Average;
};
void Swap(Sinhvien &a,Sinhvien &b)
{Sinhvien v =a ;a = b;b =v;}
void quicksort(Sinhvien *a,int l,int r)
{ if(l<=r)
{
int i=l;
int j=r;
Sinhvien key=a[(l+r)/2];
while(i<=j)
{
while(a[i].Average<key.Average)
i++;
while(a[j].Average>key.Average)
j--;
if(i<=j)
{
Swap(a[i],a[j]);
i++;
j--;
}
}
if(l<j)
quicksort(a,l,j);
if(r>i)
quicksort(a,i,r);
}
}
int main() {
Sinhvien mang[10];
mang[0].Average=4;mang[1].Average=3;mang[2].Average=7;mang[3].Average=12;mang[4].Average=8;mang[5].Average=3;
mang[6].Average=2;mang[7].Average=5;mang[8].Average=15;mang[9].Average=18;
for(int i=0;i<10;i++)
{cout<<mang[i].Average<<" ";
}
cout<<endl;
quicksort(mang,0,10);
for(int i=0;i<10;i++)
{cout<<mang[i].Average<<" ";
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?