No.5
- 回答日時:
これは取りうる値が小さく限られる場合のソートで
オープンハッシュアルゴリズムの基本部分そのものですね。
一般的なソートには制約がきつくて使えませんが、用金を限れば
ポピュラーなアルゴリズムです。
No.4
- 回答日時:
No.2
- 回答日時:
No.1です。
でもこれって、
・元の配列のサイズより要素数が大きくなる可能性がある
・負の数には対応できない
・そもそも配列:a 自体がIndexを用いた使い方に難点がある。『 a(n) 』で呼び出しても空の場合がある。
と言った感じでしょうか。
ご回答有り難うございます
>・元の配列のサイズより要素数が大きくなる可能性がある
はい、そう想定しています。メモリの無駄遣いですけどね
>・負の数には対応できない
たしかに・・・。
でも、正の値を保持する配列a、負の値を保持する配列bを用意して、b→aの順に書き出していけば解決できると思います
>・そもそも配列:a 自体がIndexを用いた使い方に難点がある。『 a(n) 』で呼び出しても空の場合がある。
あくまで新しい配列は途中経過であってソートが完了したデータではないです
さらに難点をあげるなら、元データが巨大な数値だった場合、配列が宣言できずオーバーフローになるので、桁数が制限されることですね
No.1
- 回答日時:
何番目のIndexに入れたら良いかってどうやって決めるのでしょう。
例えば元の配列のIndex:0の値を新しい配列のどこにいれるか?です。
ご回答有り難うございます
取り出した値は、新しい配列の添え字の部分に入れます。
VBAでとりあえず、書いてみました。
( ひとまず、元データの中の数値が重複しないことを前提としたコードですが、重複したケースも容易に実装できそうです )
Sub sort()
Dim a(), tmp, Result
ReDim a(0)
'ソートしたい元データ
Dim num(): num = Array(2, 12, 90, 35, 18, 55, 7, 0)
'元データから数値を取り出し、新しい配列の添え字部分に代入
'数値が配列のサイズを超えている場合、内容を保持して再定義して配列を拡張
For Each tmp In num
If tmp > UBound(a) Then ReDim Preserve a(tmp)
a(tmp) = tmp
Next
'歯抜けデータ( "" )を取り除く
For Each tmp In a
If tmp <> "" Then Result = Result & "," & tmp
Next
Debug.Print Result
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- その他(パソコン・スマホ・電化製品) 挿入ソートとマージソートを比較すると,挿入ソートのほうが計算量は少なく,効率的なアルゴリズムである。 1 2022/11/30 17:31
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Excel(エクセル) Excelのソート(並べ替え) 2 2022/05/15 22:54
- Excel(エクセル) Excel 効率的な名簿と得点の管理の仕方 8 2022/08/07 08:15
- Excel(エクセル) エクセルVBA オートフィルタでの絞り込みと並び替えについて 1 2023/07/08 13:08
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
Excelですべての組合せ(重複組...
-
Excel VBAで並べ替えをしたい
-
n番目に大きい数を求めるアル...
-
構造体配列のソート
-
VB.NETでファイル名順にファイ...
-
C# DataTableの行をソートしてD...
-
ソートのプログラム
-
DataGridViewの複数列を連動し...
-
コレクションの数値をSortで並...
-
(VBA) Dir 関数で取得するファ...
-
excel VBA リストビューの行...
-
数字文字列のソート方法
-
Excel VBA テキストボックス内...
-
ヒープソートについて
-
文字列をソートする方法
-
新しい順のリスト取得
-
配列の問題
-
C# DataGridView のヘッダーセ...
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
ファイル名「1.jpg ~10.jpg~...
-
excel VBA の条件をつけての列...
-
リスト構造のソートで悩んでま...
-
C# DataGridView のヘッダーセ...
-
DataGridViewの複数列を連動し...
-
文字列をソートする方法
-
C# DataTableの行をソートしてD...
-
C言語・要素除去
-
Excelですべての組合せ(重複組...
-
VBA基本構文の作り方 2列の...
-
列のどこをクリックしてもソー...
-
excel VBA リストビューの行...
-
あるディレクトリ内のファイル...
-
コレクションの数値をSortで並...
-
数字文字列のソート方法
-
VBScriptで重複レコードを削除...
-
2次元配列を複数項目でソートし...
-
10個の整数を入力して小さい順...
おすすめ情報