昇順ソートを行い、末尾に0の値で埋めたい。
Posted: 2015年9月06日(日) 19:12
C++でソートの勉強をしており、特殊なソートを試したいと考えています。
ネットを参考にして構造体をソートすることまでは出来たのですが、
特殊なソートの仕方をしたい場合に、どうすればよいかわからなくて・・・。
{ 0, 1, 2, 7, 0, 2 }
みたいな配列があった際に
{ 1, 2, 2, 7, 0, 0 }
のような昇順ソートをしつつも0は最後に
付加をするといった変わったことを行いたいです。
比較関数を理解出来ておらず、
ここが理解できれば、出来るのかなと推測しております。
お分かりになる方おりませんでしょうか?
以下のソースは構造体で用意した配列を
Countキーを軸としてソートしております。
ネットを参考にして構造体をソートすることまでは出来たのですが、
特殊なソートの仕方をしたい場合に、どうすればよいかわからなくて・・・。
{ 0, 1, 2, 7, 0, 2 }
みたいな配列があった際に
{ 1, 2, 2, 7, 0, 0 }
のような昇順ソートをしつつも0は最後に
付加をするといった変わったことを行いたいです。
比較関数を理解出来ておらず、
ここが理解できれば、出来るのかなと推測しております。
お分かりになる方おりませんでしょうか?
以下のソースは構造体で用意した配列を
Countキーを軸としてソートしております。
typedef struct{
int Count;
int Ptn;
int StopCount;
float Speed;
}STAGE_DATA;
int CompDate(const void* pElem1, const void* pElem2){
// ポインタ取得用
const STAGE_DATA* pmem1 = (const STAGE_DATA*)pElem1;
const STAGE_DATA* pmem2 = (const STAGE_DATA*)pElem2;
int nDiff; // 両要素の差
nDiff = pmem1->Count - pmem2->Count;
return nDiff;
}
static STAGE_DATA Stage[STAGE_MAX];
qsort( Stage, numof(Stage), sizeof *Stage, CompDate );