• ベストアンサー

降順・昇順のやり方(初心者)

現在VB2005を学んでいます。 2次元配列(要素数:10,10)で、それぞれに数字の値を入れておき、特定の列に対して降順・昇順処理をしたいと思っています。そしてそれに合わせて全体の行も入れ替えるようにします。 本当は、構造体配列等でDataGridを使って処理すれば簡単にいくのでしょうが、敢えてそれを2次元配列を使って、並び替えたものをTextBoxに表示したいのですが、中々上手くいきません。 取りあえず、配列の特定の列の値を降順・昇順に並び替えて表示させるという処理だけでも分かるといいのですが、何か良い方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.1

降順,昇順にする方法はたくさんあります。 http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%83%88 を参考にしてください。 数が10くらいだったら,その方法でも対して速度に差がでないので, 上のリンクにあるバブルソートがコーディングが簡単だと思います。

sheeton
質問者

お礼

回答ありがとうございます。 単純にソートと言ってもこれだけの種類があるんですね。とても参考になりました。 chiezo2005さんの言われた通りバブルソートが分かりやすそうなので参考にしてみたいと思います。

その他の回答 (1)

  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.2

配列(Array)にはSortメソッドがありますので、そちらを使ってみてはどうでしょうか? @ITに配列ソートに関する記事があるので参考にしてみてください。

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/215arraysort/arraysort.html

関連するQ&A

  • Access 昇順・降順で並び替えできない

    はじめまして。お伺いします。 Accessのデータシートビューです。特定の列だけ、昇順・降順の並び替えが出来なくなりました。 列を選択し、右クリックをすると、他の列では昇順・降順で並び替えのところが出る(アクティブになる)のですが、特定の一列だけ、右クリックメニューの並び替えのところがアクティブになりません。 上のメニュー内からレコードを選択しても同じです。 2,3日前に作業をしたときには出来ていて、今日開いたら出来なくなっていました。 設定のどの部分を見ればよいのか、ご示唆いただければ幸いです。 ご一読ありがとうございました。 それでは

  • DataGridViewの昇順降順。

    再びお世話になります。 VB2005で表題の件ご教授願います。 作成した表でカラムスヘッダーをクリックすることによりソートは可能状態です。しかし、数値データを表示させていていて昇順、降順とも文字列としの結果で数値の大小でソートされません。 プロパティでColumnsからCellStyleビルダのFormatを数字に選択しても結果はかわりません。 以上よろしくお願いします。

  • エクセルの昇順・降順

    エクセル2000を使用しています。ABCそれぞれのセルに何行も数値が入っています。A1に入っている数値とB1、C1に入っている数値は関連していて、以降、A2・B2・C2もA3・B3・C3・・・も、それぞれ関連している数値です。A列を昇順に直した時に(降順でも良いです)、A列の並び替えに従って、B列・C列も一緒に並び替わってくれる方法は、何かありますか?ご存知の方、教えて下さい。

  • 昇順と降順

    C言語でクイックソートを行うプログラムを探していたところ、希望していたものが見つかりました。 このプログラムは与えられた数列を昇順に並び替えるものなのですが、これを降順に並び替えるにはどうしたらよいでしょうか? いろいろ試してみたのですが、無限ループになってしまいます。 #include <stdio.h> void QSort(int x[ ], int left, int right); void Swap(int x[ ], int i, int j); void ShowData(int x[ ], int n); void main(void); /* クイックソートを行う */ void QSort(int x[ ], int left, int right) { int i, j; int pivot; i = left; /* ソートする配列の一番小さい要素の添字 */ j = right; /* ソートする配列の一番大きい要素の添字 */ pivot = x[(left + right) / 2]; /* 基準値を配列の中央付近にとる */ while (1) { /* 無限ループ */ while (x[i] < pivot) /* pivot より大きい値が */ i++; /* 出るまで i を増加させる */ while (pivot < x[j]) /* pivot より小さい値が */ j--; /* 出るまで j を減少させる */ if (i >= j) /* i >= j なら */ break; /* 無限ループから抜ける */ Swap(x, i, j); /* x[i] と x[j]を交換 */ i++; /* 次のデータ */ j--; } ShowData(x, 10); /* 途中経過を表示 */ if (left < i - 1) /* 基準値の左に 2 以上要素があれば */ QSort(x, left, i - 1); /* 左の配列を Q ソートする */ if (j + 1 < right) /* 基準値の右に 2 以上要素があれば */ QSort(x, j + 1, right); /* 右の配列を Q ソートする */ } /* 配列の要素を交換する */ void Swap(int x[ ], int i, int j) { int temp; temp = x[i]; x[i] = x[j]; x[j] = temp; } /* n 個のデータを表示する */ void ShowData(int x[ ], int n) { int i; for (i = 0; i < n ; i++) printf("%d ", x[i]); printf("\n"); } void main(void) { /* ソートする配列 */ int x[ ] = {6, 3, 1, 7, 0, 4, 8, 5, 2, 9}; int n = 10; printf("ソート前:\n"); ShowData(x, n); printf("ソート中:\n"); QSort(x, 0, n - 1); printf("ソート後:\n"); ShowData(x, n); }

  • エクセルで 昇順 降順を 結合した行ごとに

    エクセル2010です。 エクセルで 昇順 降順を 結合した行ごとに 1セットで できないものか? A列 ID番号 B列 名前 C列 ひらがな D列以降 月の 日付 1 2 3 4 5 6 7 8 と 上から 同じ種類の対応するデータが 入っているとします。 聞きたいのは  A列 ID番号順に 並び替えとしたときに 同じセットで 一緒に移動できないか? B列 C列で 並び替えをしたときに 同じセットで 一緒に移動できないか? ということです。 どうか お願いします。

  • textboxの二次元配列で質問

    textboxの二次元配列で質問 Visual Web Developer 2008を使いWebアプリケーションの入力フォームを開発中です。言語はVBです。  複数行のtextboxに入力された文字を連結する方法が分かりません。ネットでいろいろ検索して二次元配列をすれば可能なようですが、分かりやすく書いてあるサイトが見つからず、苦戦しています。列数は10列。行数は50行ぐらいあります。 ↓(サンプル)  例えば、下のような入力フォームのtextboxにあ・い・う・え・お・か・き……と入力された文字列で、buttonをクリックしたら「あいうえおかきくけこ…」と文字列の連結した実行結果を出したい場合です。       列   あ|い|う|え|お| | |   か|き|く|け|こ| | | 行 さ|し|す|せ|そ| | |   た|ち|つ|て|と| | |   な|に|ぬ|ね|の| | |    | | | | | | |    | | | | | | |    textboxが多いので、二次元配列と繰り返し処理(文字がなくなるまで繰り返す)を使って、簡単にできないでしょうか? 初心者なので分かりづらい質問で申し訳ありません。 参考になるページやコードがあったら教えて下さい。 よろしくお願いします。

  • エクセルのオートフィルターで項目が表示されません。昇順・降順・すべて・

    エクセルのオートフィルターで項目が表示されません。昇順・降順・すべて・トップテン・オブションのみしか表示されません。データー項目が全く表示されません、どの列もです。お知恵をお貸し下さい。

  • 二次元配列のインデックスについて

    基礎的な質問かもしれませんが、ネットで調べたのですが、うまく回答が見つからなかったので、教えて下さい。 VB.netで二次元配列を扱っているのですが、この要素はどこにあるのかを知りたいのです。 一次元配列でしたら、Indexof を使えば、どこのインデックスに配置されているかが分かると思うのですが、 二次元配列の場合は、どうすればインデックス数が分かるのでしょうか。 例えば、列は0で固定だけど、どこの行にこの要素が格納されているか分からないから、行番号を知りたいと言うときです。 よろしくお願いいたします。

  • 文字列3次元配列のソート(複数キー)について教えてください

    皆様こんにちは。 ソートについて悩んでおります。 以下の様な表イメージで配列を持っており (実際は要素数は動的に変わります) char AAA[10000][20][10]; /*(10000行20列10文字)*/ これを列毎のキーで昇順/降順と並び替えるプログラムを Cにて実現させたいのですが 検索して調べても2次元はよく載っているのでが、 複数列となるとなかなか無くて、お手上げ状態です。 ・qsortは使えない。 ・安定するソート法にてやらないといけなさそう というのはなんとなく理解できるのですが..... 良い方法をご存知の方いらっしゃいましたら、よろしくお願います。

  • 以前にも同じような質問があったと思いますが、検索しても見つけることがで

    以前にも同じような質問があったと思いますが、検索しても見つけることができなかったので質問させていただきます。 VisualWebDeveloper2008のWebアプリケーションで言語はVBで開発中です。。 TextBoxを縦20行横5列(IDはTextBox1…TextBox100)に配置した入力フォームで、TextBoxに入力された値を行ごとに取得していくやり方がわかりません。 さらに値を取得したら、TextBox5、TextBox10…………TextBox95、TextBox100は"あ"という文字を、それ以外のTextBoxには"い"という文字も付け加えたいです。 VBAでは For~NextとSelect Case を使いTextBox番号を指定してうまくできたがASP.NETではエラーとなってしまいます。 二次元配列やコントロール配列なども参考にしてみましたが、エラーが上がりうまくいきません。 http://okwave.jp/qa/q3457688.html 初心者で分かりづらい質問ですがよろしくお願いします。

専門家に質問してみよう