• 締切済み

Qsortについて

現在、質的研究をしていますが、ある人から「Qsortをしてみたら」 と言われました。 自分でもインターネットなどで調べてみたのですが、 Qsortがどんな方法なのか全く検討がつきません。 どなたかQsortについて知っている人はいらっしゃいませんか。 Qsortについて書かれている本などでも結構ですので、 教えて下さい。 よろしくお願いします。

みんなの回答

  • selfer
  • ベストアンサー率76% (104/136)
回答No.3

裏技としてですが,検索エンジンの「goo」で「Q-sort」で検索をかけて下さい。 そして 「Index of /~e0c218u」をクリックして その中の「Q-sort」と「Q-use」を開いて下さい。 但しAcrobat Readerが必要ですが。 でもこれにアクセスしても良いのかな?(参考URLは勘弁して下さい) あれでしたらこの回答を削除して下さい。

marico
質問者

補足

貴重な情報ありがとうございます。 で、また疑問に思う点があるのですが、Q-sortでの回答が質問紙による量的調査とどう違うのか、大きな違いがよく分かりません。Q-sortでの評定の方が、より文化的な影響とか通説とかの影響を受けにくい、回答者自身の考えが現れやすい、ということが、Q-sortの利点なのでしょうか……

全文を見る
すると、全ての回答が全文表示されます。
  • selfer
  • ベストアンサー率76% (104/136)
回答No.2

性格研究をしているから専門家といいたのですが,全く知らなかったので申し訳ありませんが「経験者」とさせていただきます。なんかくやしいです。 取り敢えず辞典的情報です。ただまるまるコピーはまずいので,自分なりに表現を変えています。 1953年Stephenson, W.(スティーヴンソン)によって開発された性格についての自己評定法の一種のようです。 例えば「私はしばしば憂鬱になる」「私は自分の知的能力に自信がない」など画家枯れた文章カードを多数用意します(100枚程度?)。 次にその文章カードを,どんな人が当てはまるかと考えながらカードを分類するようです。「自分自身」「特定の他人」「望ましい人物」などの研究者が調べたい人物像に対して,そのカードが当てはまるかあてはまらないかを多分チェックするのだと思います。 例) 文章カード「A」「B」「C」「D」「E」の5枚   私     「B」「C」「D」   友人    「A」「C」「E」   理想の自分 「A」「B」「D」「E」 このようにしてどの人物がどのカードと適合しているかを調べます。 そして「私-友人」「私-理想の自分」などの相関(一致度?)を調べることで,それぞれの人物がどれだけ類似しているかを明らかにすることができる……ようです。 この方法を使えば,現実自己と理想自己とのズレなどの程度を調べられるかも知れません。 以上,辞典ではよく分からなかったので,主観が入った説明になってしまいました。合っているかどうか全く保証はないので注意して下さい。 ……もしよければ,正確な情報が入ればお教え願えないでしょうか?

marico
質問者

お礼

詳しい説明をありがとうございました。 性格心理学の方面でよく使われているのでしょうか? 私がやろうとしている質的調査で応用できるのかどうか、 もう少し調べてみないと分かりませんので、自分でも引き続き調べてみます。 また、詳しいことが分かりましたら連絡いたします。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • futurist
  • ベストアンサー率36% (14/38)
回答No.1

Qテクニックのことではないのでしょうか…? 違うのかな? まったく自信ないですけど。

marico
質問者

お礼

回答ありがとうございました。 私もQテクニックのことなのかな、と 考えていたのですが、Qソートと同じものといって いいのかよく分からないので、困ってしまいます。 また、自分で調べてみます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • qsort のアルゴリズムについて

    現在Solaris上で作られたソフトウェアをwindowsに乗せ換えるポーティング作業を 行っているのですが、qsortの結果が一致せずに困っています。 比較関数で判定できる範囲は一致するのですが、比較関数が一致するデータ同士の順番が 一致せず、その結果出力される生成物の内容が異なってしまいます。 (同じ生成物が作成されなければポーティング作業完了と成りません) 多分qsortのアルゴリズムの違いだと思うのですが、Solarisのqsortのアルゴリズムがわかる方 いらっしゃいませんか? Solarisのコンパイラは以下の通り Sun WorkShop Compiler Csparc 5.0 出来ればqsortのソースコードが有ればよいのですが、軸要素の決定方法だけでも解れば 幸いです。 いくつか、公開されているアルゴリズムを試してみたのですが、一致する物は有りませんでした。 (Windowsのソート結果とも違いました) 因みに、Windowsの開発環境は、 Microsoft Visual Studio 10.0 です。

  • qsortの関数について

    qsortの関数について 下記のようにある本に関数の呼ぶ時、関数名(int_cmp)が引数(const void *, const void *)の後に書かれて理由を教えて頂きたい。よろしくお願いします。 質問のプログラム int int_cmp(const int *a ,const int *b) { ------ } int main { qsort(x, nx , y, (int (*)(const void *, const vois *))int_cmp);

  • C言語のqsortについて

    現在、qsortのコードに取り組んでいます。 if (strcmp(ad, "ASC") == 0) { qsort(sin, sizeof(cnt), sizeof(sin[0]), cmp_u); } else { qsort(sin, sizeof(cnt), sizeof(sin[0]), cmp_d); } 恐らくこちらのqsortでの第二引数が書き方を間違えていると思うのですが、修正の方法が分からず、どなたか教えて頂けないでしょうか? #include <stdio.h> #include <time.h> #include <string.h> #include <stdlib.h> static char ad[10]; int cmp_u(const void* a, const void* d) { return strcmp((char*)a, (char*)d); } int cmp_d(const void* a, const void* d) { return strcmp((char*)d, (char*)a); } int main() { int num1, num2; char op; float answer; int r,i; FILE* fp; char c[11]; char sin[1000][1000]; char ad[8]; fp = fopen("log.txt", "a+"); if (fp == NULL) { printf("ファイルオープン失敗\n"); return -1; } while (1) { r = scanf("%d%c%d", &num1, &op, &num2); if (r != 3) { puts("input error"); return 1; } if (op == '+') { answer = num1 + num2; } else if (op == '-') { answer = num1 - num2; } else if (op == '*') { answer = num1 * num2; } else if (op == '/') { answer = (float)num1 / num2; } time_t t = time(NULL); struct tm* tm = localtime(&t); printf("%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); printf("%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); printf("%d%c%d,%f\n", num1, op, num2, answer); fprintf(fp, "%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); fprintf(fp, "%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); fprintf(fp, "%d%c%d,%f\n", num1, op, num2, answer); printf("計算を続けますか?"); scanf("%s\n", &c); if (strcmp(c, "no") == 0) { break ; } } fclose(fp); fp = fopen("log.txt", "r"); int cnt = 0; for (i = 0;i < 1000;i = i + 1) { if (fgets(sin[i], sizeof(sin[0]), fp)) ++cnt; else break; } fclose(fp); printf("ASC or DESC: "); scanf("%s", ad); if (strcmp(ad, "ASC") == 0) { qsort(sin, sizeof(cnt), sizeof(sin[0]), cmp_u); } else { qsort(sin, sizeof(cnt), sizeof(sin[0]), cmp_d); } for (i = 0;i < cnt;i = i + 1) { printf("%s", sin[i]); } return 0; }

  • qsortと動的確保の2次元配列

    C言語で以下のようなソートのあるプログラムを作ろうとしているのですが、良い方法が思いつきません。。。。 どなたか,知恵を貸していただけないでしょうか? ・複数人の身長と体重がcsvファイルに2列に入っている。 人 身長 体重 1 158.9 50.5 2 161.2 72.3 3 150.4 42.8 4 170.7 80.4 5 165.0 59.9 ・ ・ ・ ・ ・ ・ ・↑このように身長も体重もランダムに並んでいる状態 ・身長・体重をプログラムで読み込んだら 身長の低い順にソートする。この時体重も身長に対応して並び換わってほしい。 (わかりやすいかと思い人の番号列を設けましたが、人の番号は考えなくて良いです) この問題に対して,データ数が不特定かつ多いため 動的確保の2次元配列を使ったクイックソートで対応を考えます。 qsortについてあれこれ調べていたのですが,動的確保でのqsort例が無く困っています。。。 どなたかちょっとアドバイスをいただけないでしょうか? よろしくお願いします。 #include <stdio.h> #include <stdlib.h> enum {HIGHT, WEIGHT, COLUMN}; int comp (const void *a, const void *b) //比較関数 { return (int) (((double *)a)[HIGHT] - ((double *)b)[HIGHT]) ; } int main(void) { ////////////////////////////////////////////////////////// 私情により、ソート以前の処理で使用するため あらかじめ .csv ファイルから fget で値を読み込んで コンマで分割しx[]y[]に格納してある。 &データ数をカウントしている 今は省略  仮定として以下のように5つのデータ数を読み込んでいたとする double x[5] = {158.9,161.2,150.4,170.7,165.0}; double y[5] = {50.5,72.30,42.8,80.4,59.9}; int n=5; //データカウント数 /////////////////////////////////////////////////////////// int i; double **list; list = (double**)malloc(sizeof(double)*5); for (i=0 ; i< 5 ; i++) { list[i] = (double*)malloc(sizeof(double)*COLUMN); if (list[i]==NULL) return 1;/* 領域確保に失敗したか */ } for(i=0;i<n;i++) { list[i][HIGHT]=x[i]; list[i][WEIGHT]=y[i]; } for(i = 0; i < n; i ++) printf("%lf %lf\n", list[i][HIGHT], list[i][WEIGHT]); puts("Sort"); qsort(list,n, sizeof(double [COLUMN]), comp); for(i = 0; i <n; i ++) printf("%lf %lf\n", list[i][HIGHT], list[i][WEIGHT]); scanf("%d",i); return 0; }

  • C言語のqsortについて

    下記の課題に取り組んでおり、qsortをファイルの行数分のみ出力するプログラムを書いているのですが if (strcmp(ad, "ASC") == 0) { qsort(sin,1000 , sizeof(sin[0]), cmp_u); if (sin[i][0] == 0) { break; } } else { qsort(sin, 1000, sizeof(sin[0]), cmp_d); if (sin[i][0] == 0) { break; } この書き方ではエラーが出てしまい、どなたか書き方を教えて頂けないでしょうか? 【課題】 電卓アプリケーションの作成  以下の機能を満たすアプリケーションを作成してください。  ※画面の表示やログの形式は原則として例示されている内容に従ってください。  1) 四則演算が出来ること  2) コンソールから計算対象となる数値と演算子を受け取る    例) 5 + 6  3) 結果をコンソール上に表示する    例) 11  4) 演算結果と実行した日、時間、秒をログファイルとして保存する    ログの上限は1000行とする(上限を超過するケースはひとまず考慮しなくて良い)    例) log.txt に 以下の内容を記録      2015/04/27 14:30:51, 5 + 6, 11  5) コンソールからパラメータを受け取り、ログを実行時間の昇順/降順に並べ替えて    コンソールに表示する    例) ASC を入力      2015/04/26 10:20:00, 5 + 6, 11      2015/04/27 14:30:51, 7 - 6, 1      2015/04/27 15:30:00, 7 + 8, 15      2015/04/28 14:30:51, 8 + 9, 17    例) DESC を入力      2015/04/28 14:30:51, 8 + 9, 17      2015/04/27 15:30:00, 7 + 8, 15      2015/04/27 14:30:51, 7 - 6, 1      2015/04/26 10:20:00, 5 + 6, 11 【現在のソースコード】 #include <stdio.h> #include <time.h> #include <string.h> #include <stdlib.h> static char ad[10]; int cmp_u(const void* a, const void* d) { return strcmp((char*)a, (char*)d); } int cmp_d(const void* a, const void* d) { return strcmp((char*)d, (char*)a); } int main() { int num1, num2; char op; float answer; int r,i,n; FILE* fp; char c[11]; char sin[1000][1000]; char ad[8]; fp = fopen("log.txt", "a+"); if (fp == NULL) { printf("ファイルオープン失敗\n"); return -1; } while (1) { r = scanf("%d%c%d", &num1, &op, &num2); if (r != 3) { puts("input error"); return 1; } if (op == '+') { answer = num1 + num2; } else if (op == '-') { answer = num1 - num2; } else if (op == '*') { answer = num1 * num2; } else if (op == '/') { answer = (float)num1 / num2; } time_t t = time(NULL); struct tm* tm = localtime(&t); printf("%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); printf("%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); printf("%d%c%d,%f\n", num1, op, num2, answer); fprintf(fp, "%d/%02d/%02d ", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); fprintf(fp, "%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); fprintf(fp, "%d%c%d,%f\n", num1, op, num2, answer); printf("計算を続けますか?"); scanf("%s\n", &c); if (strcmp(c, "no") == 0) { break ; } } fclose(fp); fp = fopen("log.txt", "r"); for (i = 0;i < 1000;i=i+1) { fgets(sin[i], sizeof(sin[0]), fp); //if (strcmp(sin, "NULL") == 0) { if (sin[i][0] == 0) { break; } } fclose(fp); printf("ASC or DESC: "); scanf(" %s", ad); if (strcmp(ad, "ASC") == 0) { qsort(sin,1000 , sizeof(sin[0]), cmp_u); if (sin[i][0] == 0) { break; } } else { qsort(sin, 1000, sizeof(sin[0]), cmp_d); if (sin[i][0] == 0) { break; } } for (i = 0;i < 1000;i = i + 1) { if (sin[i][0] == 0) { break; } printf("%s", sin[i]); } return 0; }

  • qsortについて

    『独習C』を使って勉強しているのですがqsortの部分で *(int*)i - *(int*)j という文が出てくるのですが、この意味がよく分かりません ##演算子の使い方も分からないので、どなたか分かる方 回答お願いします。

  • 就職活動

    現在大学3年、経済学部の男子です。10月からエントリーが始まりました。自分なりに本を読んだりインターネットを見たりして業界研究をしているのですが、一向に絞れません。特にこれといった趣味もなく、興味を持っている業界もありません。焦っています!どうすればこの状況を打開できるのかアドバイスをください。また、業界を絞っていくのにこれは役立ったというサイトや、本なども教えて下さい。おねがいします。

  • qsortについて

    qsort()で構造体をソートする時に、qsortの第3,4引数時の、「size t_t size, int (*cmp)(const void *a, const void *b)」の使い方が分かりません。 何故これを使ってソートが出来るのでしょうか?そもそも、構造体を送った時に、自作関数内での書き方にも疑問があります。 int main(void){ MAX dt[5]={・・・・}; //構造体変数宣言 ・・・・・ qsort(dt,5,sizeof(MAX),sum); //(*1) .... return 0; } int sum(const void *a, const void *b){ MAX *p1 = (MAX *)a; //(*2) MAX *p2 = (MAX *)b; //(*2) ・・・・ return ~; } ---------------------------------------------------- *1: 第3引数のsizeof(MAX)って何ですか? *2: 例えばint型が渡されてreturnする場合は、「return *(int *)a - *(int *)b 」でいいのに、   何故構造体の場合はこう書かないといけないのですか?

  • 企業研究について

    現在就職活動中(新卒)の♂です。 先日志望業界を1つに絞ったのですが、正直その業界の企業であればほぼどこでもいいという感じです。 そこで質問なのですが、同業企業の特徴を見極める企業研究をしたいと思っているのですがなかなかいい方法が分かりません。 就職活動用の業界本を買ってみたのですが企業ごとの比較はほんの少しでした。 インターネットでもみんなの就職活動日記や就活ナビ、各企業のHPなどをみているのですがイマイチです。 なにかいい方法はありませんか? もしくは上記の方法で見方を変えて研究するのがいいのですか? よろしくお願いします。

  • CObArrayのソート

    CObArrayクラスの要素をソートするにはどうしたらよいでしょうか? Cライブラリのqsortを直ぐに思い浮かべたのですが、確かqsortは配列の要素だったはすだと思いました。CObArrayの動的配列に対応できるか分かりかねましたので質問したしだいです。 参考HP,別の方法があれば教えて頂きたいです。

このQ&Aのポイント
  • 友人にお金を貸しましたが、返済がされず、脅迫された場合の対処方法について教えてください。
  • 70万円を超える金額を友人に貸しましたが、返済がなされず、脅しを受けました。このような場合、どのような手続きが必要でしょうか?
  • 友人に70万円以上のお金を貸しましたが、返済が滞っており、脅迫を受けました。この状況で法的な措置を取るためにはどうすればよいでしょうか?
回答を見る