⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qs.h

📁 Gyors rendezes(QS) futasi ido pelda
💻 H
字号:
#ifndef QS_H
#define QS_H

#include <iostream>
#include <string>

int op;

using namespace std;


template <class T>
class Q_S
{
	private:
		int Rendezd(int lent, int fent, T* tomb);

	public:
		void Quick_sort(T* t, int meret);               
        	void Quick_sort(int lent, int fent, T* t);
};


class Node
{
	public:
		int ev, terfogat, fogyaszt, ar;
		string marka;
	
	bool operator <=(Node& e);
	bool operator >=(Node& e);
};
		

ostream& operator << (ostream& os, Node e)
{
	os << "ev: " << e.ev << ", terfogat: " << e.terfogat << ", fogyaszt: " << e.fogyaszt << ", ar: " << e.ar << ", marka: " << e.marka;
	return os;
}


template <class T>
void Q_S<T>::Quick_sort (T* t, int meret)
{   
    Quick_sort(0, meret, t);
}


template <class T>
void Q_S<T>::Quick_sort (int lent, int fent, T* t)
{    
    int e;
    if (lent < fent)
    {
        e = Rendezd(lent, fent, t);
        Quick_sort(lent, e-1, t);
        Quick_sort(e+1, fent, t);
    }
}


template <class T>
int Q_S<T>::Rendezd (int lent, int fent, T* tomb)
{
	int fent_csere,lent_csere;
  	T pivot;

   	lent_csere = (int)((lent+fent)/2);
   	pivot = tomb[lent_csere];

   	tomb[lent_csere] = tomb [lent];
   	tomb[lent] = pivot; 

   	lent_csere = lent;
   	fent_csere = lent;

   	while( lent_csere < fent )
   	{
      	while ((pivot >= tomb[lent_csere]) && (lent_csere < fent))
      	{
          	lent_csere++;
      	}
      	while ((pivot <= tomb[fent]) && (fent > fent_csere))
      	{
          	fent--;
      	}
      	if(lent_csere < fent)
      	{
        		T temp = tomb[lent_csere];
        		tomb[lent_csere] = tomb[fent];
        		tomb[fent] = temp;
      	}
  	}
  	tomb[lent] = tomb[fent];
  	tomb[fent] = pivot;
  	return fent;
}


bool Node::operator <=(Node& e)
{
	bool ok = false;

	if ((op == 0) && (ev <= e.ev))
		ok = true;
	else if ((op == 1) && (terfogat <= e.terfogat))
		ok = true;
	else if ((op == 2) && (fogyaszt <= e.fogyaszt))
		ok = true;
	else if ((op == 3) && (ar <= e.ar))
		ok = true;
	else if ((op == 4) && (marka <= e.marka))
		ok = true;

	return ok;
}


bool Node::operator >=(Node& e)
{
	bool ok = false;

	if ((op == 0) && (ev >= e.ev))
		ok = true;
	else if ((op == 1) && (terfogat >= e.terfogat))
		ok = true;
	else if ((op == 2) && (fogyaszt >= e.fogyaszt))
		ok = true;
	else if ((op == 3) && (ar >= e.ar))
		ok = true;
	else if ((op == 4) && (marka >= e.marka))
		ok = true;

	return ok;
}

#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -