「マージソート」を含む日記 RSS

はてなキーワード: マージソートとは

2024-02-04

基数ソートって分割統治法に入んねえの?

ワイ:

基数ソート分割統治法を利用しているとは考えられませんか?

ChatGPT:

基数ソートRadix Sort)は、分割統治法(Divide and Conquer)を利用しているとは一般的には考えられません。基数ソートは、数値や文字列などのキーを持つ要素を、そのキーの各桁について個別ソートすることによって全体をソートするアルゴリズムです。通常、最も下位の桁から始めて、各桁について安定ソート(たとえばカウンティングソートバケットソート)を適用していきます

分割統治法は、問題をより小さなサブプロブレムに分割し(Divide)、それらのサブプロブレムを解決して(Conquer)、最後にサブプロブレムの解を統合して(Combine)元の問題の解を得るアプローチです。典型的分割統治法アルゴリズムには、クイックソートマージソートがあります

基数ソートはこのアプローチに従わず、代わりに全体のデータセットに対して桁ごとのソートを繰り返すことで全体をソートします。各桁のソートデータセット全体に対して行われ、データセットをサブプロブレムに分割してそれぞれを独立解決し、後で統合するというプロセスはありません。そのため、基数ソート分割統治法を利用しているとは一般的には見なされません。

ただし、基数ソートの各ステップでサブプロブレムに分けることなく全体のデータセットに対して操作を行うという点で、分割統治法概念の一部と見ることができるかもしれませんが、これは分割統治法典型的使用からは逸脱しています

ワイ:

上の桁から同じキーを持つグループに分割して階層的に並べていくのでは駄目なんでしょうか?

ChatGPT:

基数ソートを上の桁から開始して同じキーを持つグループに分割し、階層的に並べていくというアプローチは、実際には「Most Significant Digit (MSD) Radix Sort」と呼ばれる基数ソートバリエーションであり、有効手法です。MSD基数ソートは、最も上位の桁(Most Significant Digit)から始めて、各桁ごとにデータグループ化し、それぞれのグループに対して再帰的に同じプロセスを適用していきます。このアプローチは、ある意味分割統治法の考え方を取り入れています

MSD基数ソートの特徴:

分割: 最も上位の桁に基づいてデータ複数バケットグループ)に分割します。各バケットは同じ桁の値を持つ要素を含みます

統治: それぞれのバケットに対して、次に下位の桁に基づいてソート再帰的に適用します。これにより、各バケット内の要素がさらに細かく分類されます

結合: 最終的に、すべてのバケットを順序通りに結合して、ソートされた全体のリストを得ます

このアプローチでは、データセットをサブセットに分割し、それぞれのサブセットに対して問題再帰的に解いていくという分割統治法原則に従っています。ただし、MSD基数ソートは、分割統治アルゴリズム典型的な例(マージソートクイックソートなど)とは異なり、再帰的な過程でサブセット間の「統合ステップ必要ありません。各再帰的なステップでのソート完了した時点で、要素は既に部分的ソートされた状態になっているため、最終的な結合は単純なリストの連結に過ぎません。

MSD基数ソートは、特に固定長のキーを持つデータや、文字列などの可変長データソートする場合有効手法です。しかし、このアプローチは、特にキー分布が均一でない場合や、データセットが大きい場合には、メモリ使用量が大きくなる可能性があるため、実際の使用状況に応じて適切なソートアルゴリズム選択することが重要です。

分割統治法じゃん。

2023-11-24

anond:20231124190618

1200万行のソート自体が重そうだからなあ

sortコマンドメモリ極小環境下でも使えるように一時ファイルに書き出してマージソートしてるらしいか

メモリいっぱいあるなら--buffer-sizeオプションメモリたくさん使えるようにしたらファイル入出力が減って速くなるかも

-S, --buffer-size=SIZE

use SIZE for main memory buffer

2022-02-09

採用時のコーディングテストってどういうレベル問題が出てくるの?

FizzBuzzレベルならともかくマージソートとか最短経路計算とかだとやっぱ競プロガチ勢と戦うってなると結構辛そう

どういうレベル問題が出てくるんだろう

2021-05-02

anond:20210502134802

なんというか、職業欄見たことがない

フリーターとか、正社員かいちいちチェックしないし

XXXプログラム、1から独力で作れる?

みたいな質問はするけど、前職について、そんな事聞かない

 

明示まではされていないことも含め

プログラムをきちんとつくれるかどうか?の世界であって

なんだろう

フリーターから世渡りに優れているとか

正社員から、ガッチガチに縛られているとか

それはこっちに指示の問題から、気にしたことがない

しろ、そうだなぁいつも言うけど

クイックソートマージソートバケツソート

 

メモリ CPUの 

速さは無限で、読み込み時間時間を1 書き込み時間2を2

 

その間CPUは止まっていて、並列演算はできないと考えるとして、

データは十分に乱数ソートされており位一意性はないとする

つのソートの打ち あなたはどれをつかうか?その理由は?

 

みたいなことしか聞かない

 

ここで重要なのは、答えではなく

あなたはどう考えるか?問題へのアプローチを聞いたことはある

 

ただし便宜上理由があるならCPU,メモリの速さが有限であり、さまざまなストールCPUメモリまちが発生するとしても良い)説明問題

 

ハードの条件により、適切な答えは違うという前提で

あなたはどう考えますか?

というアプローチ力をテスト

2021-02-26

20年前からかわらないんだよ。

こっちのほうが優れているよ

クイックソートなんだよ時代

なんでもかんでも、バブルソートじゃねーんだよ。もうちょっと硬度アルゴリズムつかえよ

という案件は。

まぁマージソートでもいいんだけど

クイックソートのほうが、いいんだ!クイックソートに書き換えろという、客ではなく上司や同僚というものはいつもいる。

わざわざマージソートを描き下ろしてんだけどという時にな

2020-06-29

anond:20200629091245

ものすごい単純に言えば マージソートで作ろうとしているにヒープソートで書くなみたいなはなしで それなら そ~と頼むってお願いする

バケツソートでもいい

だれかを手伝うことがどれだけ大変か その都市で知らないと成ると よほど 接待されてきた お金持ち様

しょうがない その人が手伝ったことを中心に 組み換えなおしゃ そりゃ 楽だろう

2020-03-02

プログラム

ソートで例えりゃ

マージソート派とか

ホゴソート派とか

そのひとのすきなソートってあるから

なんでもいいときはまかせる。そういうのを大切する方針

逆に必要ときは、最初に言う

2020-01-08

クイックソートで囲うとしたが、ここは

マージソートメモリーを使って高速化ってなんどもいってるんだけど

ようやくバケツソートができるようになった初心者からって、甘えんなよ。

マージソートぐらい初歩だろ?

メモ取ってんのか?

こんなことぐらい1度いわれたら分かれよ、マージソートなんて基礎だぞ、この業界どんだけ難しいとおもってんだ

マージソートぐらい1回の授業でメモして覚えろよ。石頭。

2020-01-01

マージソートクイックソートのちがいというより

かにも、いろんなソートがある。違いがわからない人はいクイックソートが一番早いとおもっている人もいる。

それがお客さんの平均値というより、代表的サンプリングの1つ。

 

でも、そういうかたをお客さんにして、余計な時間をとらせず最適な形にシステムをしていく。

むずかしい。

2019-12-24

anond:20191224182554

プログラム話題で言うと

なぜクイックソートではだめなのか論

というのは、学校の話で言うなら、ただし空気抵抗無視するみたいなはなしで

できねーだろ陸上競技では見たいな話に近い。

つか、でなければマージソートヒープソートないだろ

というかそこに正解はない、というのも含めて

OJTゆっくり対話をしていく。

そのけーすでのこたえをいえばいいというものか?しごと

2019-11-04

マージソートで書いておいたら

ここはヒープソートの方が高速でした!

って書き換えられて

いや、マージソート別なところで使うから試験目的もあって先行的に書いてあるんだけど

などなど

ソースコードは複雑だから関数単位なら中身かえていいという事もない場合もある。

からいろいろおしえてやらないといけない共同作業のやり方

それは会社ごとに違う、すこしづつすこしづ新人をチームにならしていく

これをリードイン

から中規模だと1年ぐらいは見る。

 

だめではないんだけど、やりかたが会社ごとに違う。

2018-12-23

anond:20181223182722

一気に並べてみる

オーソドックスな書きかた

int i;
int space;
for (int i = 0; i < 8; i++)
{
	for (space = 0; space < i; space++)
	{
		printf(" ");
	}
	printf("Hello world\n");

}

すまん <は半角の<に置き換えてくれ(w)

バッファをつかってループを1つ削る

	int i;
	int space;
	char buffer[8];
	char buffer2[8];
	memset(buffer, 0, 8);
	memset(buffer2, 0, 8);
	for (int i = 0; i < 8; i++)
	{
		memset(buffer, 0x20, i);
		printf("%sHello world\n",buffer);

	}

memsetも削ってみる

	int i;
	int space;
	char buffer[8];
	char buffer2[8];
	memset(buffer, 0, 8);
	memset(buffer2, 0, 8);
	for (int i = 0; i < 8; i++)
	{
		buffer[i] = 0x20;
		printf("%sHello world\n",buffer);

	}

この場合特に影響はないが一般的にはmemsetを使う使わないは大きな影響になるので

memsetを削る場合は注意が必要

C++を使ってみる

	std::string space;
	for (int i = 0; i < 8; i++) {
		printf("%sHello world\n", space.c_str());
		space += " ";
	}

C++を使ってみるの別回答

	std::string space_org;
	for (int i = 0; i < 8; i++) {
		std::string space = space_org + " ";
		printf("%sHello world\n", space.c_str());
		space_org = space;
	}

考察

ざつにかんがえても 書き方いろいろ 

それぞれメリット デメリットが有る

まり まぁ どれがいいというよりは

状況に応じてかき分けていく必要がある

学校の授業などだと

アルゴリズムの話で

ヒープソート マージソート クイックソート比較みたいな話があるけど

そこまで難しい話にいかなくても

ハローワールドだけ見てかつ雑に考えてもこのぐらいは

書き方がたくさんある

どれを書くか?どれがいいか? 考えると面白い

2015-06-14

さっきウトウトしていて面白い夢をみた

小学校教室で騒いでいる子が数人いて

学級委員長?高学年?ぽい子が

おまえら!あんまうるさいと

マージソートだよ!」

といいながら生のヤングコーンをかじる夢

2015-03-16

http://anond.hatelabo.jp/20150316132825

そもそもソート全般副作用っぽいので相性悪いのだろう。

マージソートのことも思い出してやってください。あとヒープソート結構いけるで (immutableなヒープと組み合わせ。lazyと相性がいい)

2014-02-03

http://anond.hatelabo.jp/20140203231857

RDBMS で ORDER BY してまともな時間で終わらなかったのが、

いったんテキストに吐いてから UNIXコマンド群を組み合わせて処理したら安定的に終わったことがあってね。

クイックソートの最悪ケースと、マージソートの安定性について、

ようやく座学の知識に血が宿った気がしたんだよ。

それを通じて、

  • なぜソートには色んな種類があるのか
  • 計算量とはなにか
  • 性能評価とはなにか
  • UNIXの「一つのことをうまくやれ」という哲学

について初めてまともに考えるようになったのさ。

お前、インターネット歴 2 年ぐらいか?

俺は 10 年超えてるからお前の浅さがよく分かるよ。

http://anond.hatelabo.jp/20140203225348

ドットインストールwww

なんか、書いてある事の難易度が剥離しすぎてて笑えるw

途中まで抽象的に難しげなこと書こうとしてるな、と思ったら

あと、テキストファイルマージソートUNIXコマンドでやってみるとかお勧め

なんやねんそれwww

まさにドットインストールで教えてそうなレベルwww

http://anond.hatelabo.jp/20130321232717

写経が足りない。手を動かして動くものを作るんだ。

ドットインストールなりrailsチュートリアルなり、golangなりやって見るんだ。

そうやってブートストラップしていくとどう情報を掴んでいけば良いか分かるようになってくる。

頑張ればスマホアプリにも手を出せるさ。

とりあえず学部3年なら簡単なTODOリスト管理アプリを作れるぐらいでバイト普通に見つかるだろう。

それが難しければ、パソコンサポートなら出来るだろう。なんでも良いからやらせて貰え。

教授にでも、バイト先の社長にでもお願いして。

数学は最低、離散数学ブール代数はきちんと練習すること。あと集合。

それ以外の情報系の授業でソフトウェアだと、

ハード系だと

の辺りを意識的に取り組んで欲しい。

その他は、

あたりを読んで、分からないところを先生や詳しい同級生に聞く。

あと、5000万行ぐらいのテキストファイルで、マージソートUNIXコマンドでやってみるとかお勧め

ただし、そうやっていく中で、もし「楽しい」と思えない時間が3ヶ月〜半年なり続くようであれば、

適性を求めて (例えば) 経済学部などに行くが良かろう。

2013-11-22

http://anond.hatelabo.jp/20131122173930

最近コンパイラってバブルソートマージソートに書き換えるような処理をコードのあらゆる所でやってくれるの?

チューリングメダル並みの業績だと思うんだけど、そんな大ニュース、聞かないなぁ。

2008-04-18

http://anond.hatelabo.jp/20080418014735

すみません、訂正します。

デフォルトのConparatorはconparableを実装したオブジェクトソートします。

自分でConparatorを作って使う場合にはこの限りではありません。

あと、デフォルトソートマージソートでした。

お目汚しすみませんでした。

 
ログイン ユーザー登録
ようこそ ゲスト さん