« Visual Studio のテスト機能に関する記事 | メイン | [Event] VSUG Day 2011 Summer »

Sleep Sort の C#/.NET4 版

※ 参考: Sleep sortの各言語での実装まとめ

// Sleep Sort C#/.NET4 版

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Threading;

public static class SleepSort
{
    public static IEnumerable<T> Sort<T>(this IEnumerable<T> collection, Func<T, int> convert)
    {
        var queue = new ConcurrentQueue<T>();
        collection.AsParallel().ForAll(
            value => {
                Thread.Sleep(convert(value));
                queue.Enqueue(value);
            }
        );
        return queue;
    }
}  

static class Program
{
    static void Main()
    {
        var sortedCollection = new[] { 30, 200, 70, 400, 800, 35 }.Sort(x => x);
        foreach (var item in sortedCollection)
            Console.WriteLine(item);
    }
}

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2011年05月20日 20:00に投稿されたエントリーのページです。

ひとつ前の投稿は「Visual Studio のテスト機能に関する記事」です。

次の投稿は「[Event] VSUG Day 2011 Summer」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35