[解決済み] C言語で配列の並べ替え?
2022-03-07 14:09:41
質問
次の配列を並べ替えるのに最も適したソート方法はどれか、また重複がある場合はどのように処理するか。
int a= {1,3,6,7,1,2};
また、ソート技術はどれが一番いいのでしょうか?
void BubbleSort(int a[], int array_size)
{
int i, j, temp;
for (i = 0; i < (array_size - 1); ++i)
{
for (j = 0; j < array_size - 1 - i; ++j )
{
if (a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
解決方法は?
C言語では、ビルトインされている
qsort
コマンドを使用します。
int compare( const void* a, const void* b)
{
int int_a = * ( (int*) a );
int int_b = * ( (int*) b );
if ( int_a == int_b ) return 0;
else if ( int_a < int_b ) return -1;
else return 1;
}
qsort( a, 6, sizeof(int), compare )
をご覧ください。 http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/
最適な(比較ベースの)ソートアルゴリズムとは、O(n log(n))の比較で実行されるものです。この特性を持つものはいくつかありますが(クイックソート、マージソート、ヒープソートなど)、どれを使うかはあなたのユースケースに依存します。
余談ですが、データについて知っていれば、O(n log(n))よりも良い結果が得られる場合があります。 基数ソート
関連
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] O(log n)とは具体的にどのような意味ですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】オブジェクトの配列をプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み】LEALアセンブリ命令は何をするのですか?
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み】固定長 6 int 配列の最速ソート