| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
143 バイト追加 、 2020年2月15日 (土) 07:59
編集の要約なし
==マージソート==
[[VC++.NET]]{{category ロジック}}
VC++.NET 2005
static void marge( array<&lt;String^>&gt;^ ary, array<&lt;String^>&gt;^ ary1, array<&lt;String^>&gt;^ ary2 ) {
int i = 0;
int j = 0;
int k = 0;
while(i < &lt; ary1->&gt;Length && j < &lt; ary2->&gt;Length ) { if ( ary1[i]->&gt;CompareTo(ary2[j]) < &lt; 0 ) {
ary[k++] = ary1[i++];
} else {
}
}
while(i < &lt; ary1->&gt;Length ) {
ary[k++] = ary1[i++];
}
while(j < &lt; ary2->&gt;Length ) {
ary[k++] = ary2[j++];
}
}
static void margeSort( array<&lt;String^>&gt;^ ary ) {
if (ary->&gt;Length > &gt; 1) { int m = ary->&gt;Length / 2; int n = ary->&gt;Length - m; array<&lt;String^>&gt;^ a1 = gcnew array<&lt;String^>&gt;(m); array<&lt;String^>&gt;^ a2 = gcnew array<&lt;String^>&gt;(n);
for (int i=0; i<&lt;m; i++) {
a1[i] = ary[i];
}
for (int i=0; i<&lt;n; i++){
a2[i] = ary[m + i];
}
}
static void sort( array<&lt;String^>&gt;^ ary ) {
margeSort(ary);
}
static void print( array<&lt;String^>&gt;^ ary ) {
for (int i=0; i<&lt;ary->&gt;Length; i++) {
Console::WriteLine(ary[i]);
}
}
int main(array<&lt;System::String ^> &gt; ^args)
{
while ( (line = Console::ReadLine()) != nullptr ) {
list->&gt;Add(line);
}
array<&lt;String^>&gt;^ ary = gcnew array<&lt;String^>&gt;(list->&gt;Count); list->&gt;CopyTo(ary, 0);
sort(ary);

案内メニュー