public static int[] Sort(int[] ints)
{
var dictionary = new IndexedDictionary<int, int>();
foreach (var i in ints)
{
dictionary.Add(i, i);
}
for (int i = 0; i <= ints.Length - 1; i++)
{
var indexValue = dictionary[i].Key;
dictionary[indexValue - 1].Value = indexValue;
}
return dictionary.Values();
}
它是一個桶排序?我已經看到了一些排序,他們看起來比這更復雜。另外請忽略IndexedDictionary類 - 它是一個自定義類,允許通過索引獲取值。這個排序算法在c#中的名稱是什麼?
編輯:CompuChip - 如果你想看到的IndexedDictionary:
public class IndexedDictionary<T, TY>
{
public class DicObject<T, Y>
{
public T Key { get; set; }
public Y Value { get; set; }
}
private HashSet<DicObject<T, TY>> list = new HashSet<DicObject<T, TY>>();
public void Add(T o, TY u)
{
list.Add(new DicObject<T, TY>{Key = o, Value = u});
}
public DicObject<T, TY> this[int i] {
get{return list.ElementAt(i);}
}
public T[] Keys()
{
return list.Select(x => x.Key).ToArray();
}
public TY[] Values()
{
return list.Select(x => x.Value).ToArray();
}
}
它不是關鍵的。
排序什麼屬性是什麼? – Gnqz
我不知道我們怎麼可以忽略'IndexedDictionary',因爲它似乎是你的算法的關鍵,但假設它像一個標準字典一樣工作,我會認爲這基本上是一個插入排序 - 你把所有的值放入一個字典將其插入正確的位置以保持其鍵的排序。 – CompuChip
這似乎給字典增加了新的值,你確定這只是*一個*排序*實現? –