public void AddRecord(Record r) { int bestRank = FindRecord(r); myCompareClass myCompare = new myCompareClass(); if (bestRank < 100) { record[99] = r; Array.Sort(record, myCompare); } SaveGame(); }
/// <summary> /// Cuthill-McKee algoritm for renumbering nodes /// </summary> public void RenumberNodes() { int n = nodes.Count; List<int>[] listNodes = new List<int>[nodes.Count]; for (int i = 0; i < n; i++) { listNodes[i] = Connections(i); } // Sort all connection of i node myCompareClass mcc = new myCompareClass(listNodes); for (int i = 0; i < n; i++) { listNodes[i].Sort(mcc); } // Find node with minimum cinnections int minNode = 0; int minConnection = listNodes[minNode].Count; for (int i = 1; i < n; i++) { int curConnection = listNodes[i].Count; if (minConnection >= curConnection) { minNode = i; minConnection = curConnection; } } // Creating renumbered table List<int> renumberTable = new List<int>(); renumberTable.Add(minNode); int cur = 0; while (renumberTable.Count < n) { // listNodes[renumberNodes[cur]] - list connection of curent node in renumberTable for (int i = 0; i < listNodes[renumberTable[cur]].Count; i++) { int curNode = listNodes[renumberTable[cur]][i]; if (renumberTable.FindItem(curNode) == -1) renumberTable.Add(curNode); } cur++; // next renumber node } // Nodes renumbering List<Node> renumberedNodes = new List<Node>(); for (int i = 0; i < renumberTable.Count; i++) { renumberedNodes.Add(nodes[renumberTable[i]]); } nodes = renumberedNodes; // Triangles renumbering for (int i = 0; i < triangles.Count; i++) { triangles[i].IndexA = renumberTable.FindItem(triangles[i].IndexA); triangles[i].IndexB = renumberTable.FindItem(triangles[i].IndexB); triangles[i].IndexC = renumberTable.FindItem(triangles[i].IndexC); } // Boundary renumbering for (int i = 0; i < boundary.Count; i++) { boundary[i].IndexA = renumberTable.FindItem(boundary[i].IndexA); boundary[i].IndexB = renumberTable.FindItem(boundary[i].IndexB); } }