using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace SortApplication
{
public class getList
{
public int id;
public int parentId;
public string name;
public getList(int id, int parentId, string name)
{
this.id = id;
this.parentId = parentId;
this.name = name;
}
}
class Program
{
private static IList<getList> GetList(getList[] myList, int pid)
{
int count = myList.Length;
IList<getList> al = new List<getList>();
for (int i = 0; i < count; i++)
{
if (myList[i].parentId == pid)
{
// Console.WriteLine(”上面测试 : ” + pid);
al.Add(myList[i]);
}
}
return al;
}
private static void SortList(getList[] myList, IList<getList> Al, ref getList[] listCopy)
{
if (listCopy[0] == null)
{
Al.Add(myList[0]);
}
try
{
foreach (getList lis in Al)
{
int i;
for (i = 0; i < listCopy.Length; i++)
{
if (listCopy[i] == null)
{
break;
}
}
// Console.WriteLine("///" + i + "//////");
listCopy[i] = (getList)lis;
// Console.WriteLine(f);
Al = GetList(myList, lis.id);
SortList(myList, Al, ref listCopy);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
static void Main(string[] args)
{
getList[] ourList = new getList[] {
new getList(1, 0, "a"),
new getList(2, 1, "b"),
new getList(3, 1, "c"),
new getList(4, 2, "d"),
new getList(5, 4, "e"),
new getList(7, 3, "aaa"),
new getList(6, 5, "f")
};
string BlankBase = new string(' ', 8);
Console.WriteLine("排序以前的对象");
for (int i = 0; i < ourList.Length; i++)
{
Console.WriteLine(ourList[i].id + BlankBase + ourList[i].parentId + BlankBase + ourList[i].name);
}
getList[] listCopy = new getList[ourList.Length];
IList<getList> Alist = new List<getList>();
SortList(ourList, Alist, ref listCopy);
Console.WriteLine("\r\n\r\n排序以后的对象");
for (int i = 0; i < listCopy.Length; i++)
{
try
{
Console.WriteLine(listCopy[i].id + BlankBase + listCopy[i].parentId + BlankBase + listCopy[i].name);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
}
分享到:
相关推荐
在计算机科学中,递归是一种强大的编程...本例题提供的直观示例将有助于深化对递归的理解,对于初学者来说,这是一个很好的学习资源。通过实践和分析这样的例子,可以更好地掌握递归的精髓,从而在实际项目中灵活运用。
现在,我们来看一个简单的C语言递归示例,这个例子不是常见的汉诺塔问题,而是计算阶乘: ```c #include // 阶乘函数,n! = n * (n-1) * (n-2) * ... * 1 int factorial(int n) { // 基本情况:0的阶乘为1 if ...
以下是一个基本的C#递归函数,用于加载TreeView节点的子节点: ```csharp public void LoadTreeNodes(TreeNode node, TreeNodeCollection nodes) { // 基本情况:如果节点没有子节点,停止递归 if (node.Nodes....
以下是一个简单的VB 2005代码示例,演示了如何使用递归来解决汉诺塔问题: ```vbnet Module Module1 Sub Main() MoveDisks(3, "A", "B", "C") End Sub ' 递归函数,n为盘子数量,from为起始柱子,to为目标柱子...
在示例中,非递归函数gcd_test_one通过for循环构建了一个列表来存储所有能够同时整除a和b的数,然后使用内置函数max来找出这个列表中的最大值,即为两数的最大公约数。 在实际应用中,选择使用递归还是非递归方法取...
递归是编程中的一个强大概念,其中一个函数在其定义中调用自己。在 C 语言中,递归常用于解决那些可以被分解为更小的相同问题的任务。递归通常包括两个主要部分: 递归基准条件:这是递归停止的条件,用于防止无限...
任何一个循环的代码都可以用递归改写,实现相同的功能;反之亦然。在不失去其普遍性的前提下,可以把循环和递归分别用下列伪代码概括。 伪代码格式说明:循环采用while形式;变量不加定义;赋值用:=;条件表达式和...
在给定的代码片段中,`fun2`函数是用来计算阶乘的一个典型递归示例。阶乘是指一个正整数的所有小于等于它的正整数的乘积,通常表示为`n!`。例如,`5! = 5 * 4 * 3 * 2 * 1 = 120`。 ```java public static int fun2...
在编程领域,递归是一种强大的工具,特别是在...递归是一个强大的工具,但需要谨慎使用。理解递归的工作原理和其在不同场景中的应用,将极大地提升你的编程技能。通过实践,你将能更熟练地在C#中运用递归解决实际问题。
以下是一个简单的递归方法示例,用于计算阶乘: ```csharp int Factorial(int n) { if (n == 1) // 基本情况 return 1; else return n * Factorial(n - 1); // 递归步骤 } ``` ### 代码分析 #### BindTree() ...
递归在这里被用来删除一个部门及其所有子部门。下面将详细解释这段代码的工作原理和递归在其中的作用。 首先,`del` 函数接受一个参数 `$bumen_id`,这代表要删除的部门ID。函数的主要任务是删除指定ID的部门,并...
每当你有一个父节点和一个或多个子节点的关系时,递归就派上用场了。 在这个ASP.NET项目中,"SolutionTree"很可能是指解决方案(Solution)中的层次结构,可能是模拟了文件系统的目录结构或者是数据库中的分类结构...
"是一个教学示例,旨在教授如何在C#环境下利用递归算法计算阶乘(N!)。 首先,让我们理解什么是阶乘。阶乘是数学中的一个概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5! = 5 × 4 ...
关于递归的误区:深入解析递归的时间复杂度与优化策略 在计算机科学领域,递归是一种常见的算法设计技巧,其基本思想是将问题分解为更小的子问题,直至达到可以直接解决的基本情况,然后逐步返回求解原问题。递归因...
下面是一个简化的示例代码: ```csharp using System.IO; public static void TraverseDirectory(string directoryPath) { // 获取当前目录下的所有文件 string[] files = Directory.GetFiles(directoryPath); ...
本文档将通过一个C#中的简单递归示例来介绍递归方法的基本用法。 #### 二、递归方法的概念与原理 递归方法是指在一个方法中直接或间接地调用自身的方法。为了确保递归能够正确终止并避免无限循环的情况,递归方法...
2. 定义一个递归函数,接收当前已选择的元素集合和剩余未选择元素的索引。 3. 如果已选择元素的数量等于M,将当前组合添加到结果集合。 4. 对于每个未选择的元素(从当前索引到N-1),将其添加到选择集合,并递归...
以下是一个简单的递归存储过程的概念示例: ```sql CREATE PROCEDURE RecursiveProcedure (@CurrentLevel INT = 1, @MaxLevel INT) AS BEGIN -- 假设我们有一个层次结构表HierarchicalData (ID, ParentID, Name) ...
快速排序算法就是一个经典的分治递归示例: ```c void quick_sort(int arr[], int left, int right) { if (left ) { int pivot = partition(arr, left, right); quick_sort(arr, left, pivot - 1); // 递归调用 ...