اینطوری که سخت شد!!
از همون quick sort برای مرتب سازی استفاده کنید البته 500 تا عدد زیادی نیست مرتب سازی ترتیبی یا حبابی هم به اندازه کافی کارآمد هستند(برای 500 تا داده با سرعت کامپیوتر های امروزی)
2- بهترین راهی که به فکر من میرسه(شاید راه های خیلی بهتری هم باشه!) اینه که شما واحد ها رو به صورت enum تعریف کنید و یه تابع جداگانه برای تبدیل کد واحد و به نام واحد استفاده کنید یعنی تابعی که ورودیش یه int باشه(همون کد درس ) و خروجیش یه آرایه از رشته(یا حتی یه اشاره گر فقط کافی بشه چاپش کرد) در واقه من میگم نام واحد های درسی تو ساختار دانشجو ذخیره نشه همون کد واحد کافیه ولی موقع نمایش اطلاعات با دادن کد درس میتونید اسم درس رو چاپ کنید
3- بله تا لحظه آخر باید بمونه یا حداقل تا لحظه ای که اطلاعات ذخیره نشدن