構造体配列を指定の順番でソートするには
Posted: 2015年6月09日(火) 20:33
質問です、構造体の配列のソートなのですが
配列を降順や昇順にするにはクイックソートを使えばよいと思うのですが
自分が指定した順番にソートしたい場合はどのように実装するのが良いのでしょうか
申し訳ありませんがご教授よろしくお願いいたします。
下記の例だと並べる品番をこちらで指定した下記のような順にソートするという感じです。
・5050、3010、3020、2020、5200の品番順にソートする
配列を降順や昇順にするにはクイックソートを使えばよいと思うのですが
自分が指定した順番にソートしたい場合はどのように実装するのが良いのでしょうか
申し訳ありませんがご教授よろしくお願いいたします。
下記の例だと並べる品番をこちらで指定した下記のような順にソートするという感じです。
・5050、3010、3020、2020、5200の品番順にソートする
#include <stdio.h>
#include <stdlib.h>
#define NAMELEN 20
typedef struct {
int hb; //品番
char name[NAMELEN]; //商品名
int price; //価格
} choco_t;
// --------------- 比較用の関数 cmp -------------------
int cmp( const void *p, const void *q ) {
return ((choco_t*)p)->hb- ((choco_t*)q)->hb;
}
// ----------------------------------------------------
main()
{
choco_t lst[] =
{ { 5200, "商品A", 1000 }, { 3010, "商品B", 840 }
, { 2020, "商品C", 525 }, { 3020, "商品D", 720 }
, { 5050, "商品E", 1200 } };
int i;
int n = sizeof lst / sizeof( choco_t );
qsort( lst, n, sizeof(choco_t), cmp );
}