zoukankan      html  css  js  c++  java
  • 算法大全源码

    冒泡排序 bubble sorting

            int t;

              int[] a ={21,56,64,94,97,123};

              for(int j =a.Length-1;j>0;j--)

              {  for(int i =0;i<j;i++)

                 { if(a[i]>a[i+1])

                  { t =a[i];

                    a[i]=a[i+1];

                    a[i+1]=t;

                  } } }

              for(int u =0;u<a.Length;u++)

             Console.WriteLine(a[u]);    结果:21,56,64,94,97,123

    同时找最大最小

            int temp;                 

              int[] a={56,66,5,1230,87,95};

              for(int i =0;i<(a.Length+1)/2;i++)

              {  if(a[i]>a[a.Length-1-i])

                 {  temp =a[i];

                     a[i] =a[a.Length-1-i];

                     a[a.Length-1-i] =temp;

                 }

              }

              int max =a[a.Length-1],min =a[0];

              for(int i=0;i<(a.Length+1)/2;i++)

              {    if(min>a[i])

                  min =a[i];

    }

              for(int i =(a.Length+1)/2;i<a.Length;i++)

              {    if(max<a[i])

                  max =a[i];

    }

              Console.WriteLine("{0},{1}",min,max);   结果:5,1230

    基数排序

            int[] a={1,5,9,7};

              int[] b=new int[10];

              for(int i=0;i<a.Length;i++)

                 b[a[i]]=1;

              for(int j=0;j<b.Length;j++)

                 if(b[j]==1)

                     Console.WriteLine(j);     结果:1,5,7,9

    插入排序

            int[] r={12,2,6,65,42};

               for(int i=1;i<r.Length;i++)

              {  int t;

                 t=r[i];

                 int j;

                 for(j=i-1;j>=0 && r[j]>t;j--)

                 {}

                 for(int k=i;k>j+1;k--)

                     r[k]=r[k-1];

                 r[j+1]=t;        

              }

              for(int f=0;f<r.Length;f++)

                 Console.WriteLine(r[f]);    结果:2,6,12,42,65

    QuickSort   快速排序

            static void QuickSort(int[] a,int start,int end)

              {  int i=start,j=end;

                 int pivot = a[i];

                 while(i<j)

                 {  while(i<j && pivot<=a[j])

                        j--;

                     a[i] = a[j];

                     while(i<j && a[i]<=pivot)

                        i++;

                     a[j]=a[i];

                 }

                 a[i] = pivot;

                 if(i>start)

                     QuickSort(a,start,i);

                 if(i<end)

                     QuickSort(a,i+1,end);

              }

          static void Main(string[] args)

          {  int[] x={87,56,5,13,5,12,};

              QuickSort(x,0,x.Length-1);

              for(int i=0;i<x.Length;i++)

                 Console.WriteLine(x[i]);

           }    结果:5,5,12,13,56,87

    MergeSort  归并排序

            static void MergeSort(int[] a,int s,int e)

              {  if(s>=e) return;

                 MergeSort(a,s,(s+e)/2);

                 MergeSort(a,(s+e)/2+1,e);

                 Merge(a,s,(s+e)/2,e);

              }

          static void Merge(int[] a,int s,int mid, int e)

          {  int[] b=new int[a.Length];

              for(int w=0;w<a.Length;w++)

                 b[w]=a[w];

              int i=s;

              int j=mid+1;

              int k=s;

              while(i<=mid && j<=e)

              {  if(b[i]<b[j])

                     a[k++] = b[i++];

                 else

                     a[k++] = b[j++];

              }

              while(i<=mid)

                 a[k++] = b[i++];

              while(j<=e)

                 a[k++] = b[j++];

          }

          static void Main(string[] args)

          {  int[] a={34,2,5,66,87,99};

              MergeSort(a,0,a.Length-1);

              for(int i=0;i<a.Length;i++)

                 Console.WriteLine(a[i]);

          }    结果:2,5,34,66,87,99

    二叉查找树

    // 二叉查找树节点 Binary search tree node

       public class BinarySearchTreeNode

       { public int key;// 二叉查找树节点的值

          public BinarySearchTreeNode left;// 二叉查找树节点的左子节点

          public BinarySearchTreeNode right;// 二叉查找树节点的右子节点

          /// 二叉查找树节点构造函数

          public BinarySearchTreeNode(int nodeValue)

          {  key = nodeValue;//nodeValue 节点的值

              left = null; right = null;

          }

          /// 插入节点

          public void InsertNode(BinarySearchTreeNode node)

          {  if(node.key > this.key)

              {  if(this.right == null)

                 {  this.right = node;//node插入的节点

                     return;

                 }

                 else

                     this.right.InsertNode(node);

              }

              else

              {  if(this.left == null)

                 {  this.left = node; return; }

                 else

                     this.left.InsertNode(node);

              }

          }

          /// 二叉查找树查询

          public bool SearchKey(int searchValue)

          { if(this.key == searchValue)//searchValue需要查询的值

                 return true;// 是否找到查询的值

              if(searchValue > this.key)

              {  if(this.right == null) return false;

                 else

                     return this.right.SearchKey(searchValue);

              }

              else

              {  if(this.left == null)  return false;

                 else

                     return this.left.SearchKey(searchValue);

              }

          }

          // 中序遍历

          public void MiddleDisplay()

          { if(this.left != null)

                 this.left.MiddleDisplay();

              Console.WriteLine(this.key);

              if(this.right != null)

                 this.right.MiddleDisplay();

          }

          // 前序遍历

          public void FrontDisplay()

          { Console.WriteLine(this.key);

              if(this.left != null)

                 this.left.FrontDisplay();

              if(this.right != null)

                 this.right.FrontDisplay();

          }

          // 后序遍历

          public void BehindDisplay()

          {  if(this.left != null)

                 this.left.BehindDisplay();

              if(this.right != null)

                 this.right.BehindDisplay();

              Console.WriteLine(this.key);

          }

       }

       /// 二叉查找树

       public class BinarySearchTree

       {  private BinarySearchTreeNode root;

          /// 生成一个二叉查找树

           public BinarySearchTree()

          {  root = nul; }

          /// 生成一个二叉查找树

          /// <param name="nodeValue">二叉查找树根节点的值</param>

          public BinarySearchTree(int nodeValue)

          { root = new BinarySearchTreeNode(nodeValue); }

          /// 在二叉查找树上插入一个节点

          /// <param name="nodeValue">插入节点的值</param>

          public void InsertBinarySearchTreeNode(int nodeValue)

          {   BinarySearchTreeNode insertNode = new BinarySearchTreeNode(nodeValue);

                        if(root == null)

              { root = insertNode;

                 return;

              }

              else

                 root.InsertNode(insertNode);

              return;

          }

          /// 在二叉查找树上查询一个数

          /// <param name="searchValue">需要查询的值</param>

          /// <returns>是否找到查询的值</returns>

          public bool SearchKey(int searchValue)

          { if(root.key == searchValue)  return true;

              else

                 return root.SearchKey(searchValue);

          }

          /// 二叉查找树中序遍历

          public void MiddleDisplay()

          { root.MiddeleDisplay(); return; }

          /// 二叉查找树前序遍历

          public void FrontDisplay()

          { root.FrontDisplay(); return; }

          /// 二叉查找树后序遍历

          public void BehindDisplay()

          {  root.BehindDisplay(); return; }

          /// 二叉查找树排序

          /// <param name="a">需要排序的数组</param>

          public static void BinarySearchTreeSort(int [] a)

          { BinarySearchTree t = new BinarySearchTree();

              for(int i = 0; i < a.Length; i ++)

                 t.InsertBinarySearchTreeNode(a[i]);

              t.MiddleDisplay();return;

          }/// 二叉查找树查找

          /// <param name="a">进行查找的数组</param>

          /// <param name="searchKey">需要查找的树</param>

          public static bool BinarySearchTreeSearch(int [] a, int searchKey)

          {  BinarySearchTree t = new BinarySearchTree();

              for(int i = 0; i < a.Length; i ++)

                 t.InsertBinarySearchTreeNode(a[i]);

              return t.SearchKey(searchKey);

          }

       }

    namespace 二叉树

    {  class Node

       {  int n;

           public Node(int x)

           {  n=x; }

           public Node Left;

           public Node Right;

           public void Insert(Node node)

           {  if(node.n > this.n)

               {  if(this.Right == null)

                       this.Right = node;

                   else

                       this.Right.Insert(node);  }

               else

               {  if(this.Left == null)

                   { this.Left = node; }

                   else

                   { this.Left.Insert(node); }  }  }   //递归

           public void Show()

           {  Console.WriteLine(n); } }

       class BinaryTree

       {  Node root; 

           public void GenerateTree(Node node) //高内聚,低耦合

           {  if(root == null)

               {  root = node; return; }//如果树是空,第一次加节点

               root.Insert(node); 

       }

           public void ShowInOrder(Node node) //中序遍历(in order):左中右。先(前)序遍历(pre order):中左右。后序遍历(post order):左右中。

           {  if(node == null) return;//递归必须有个终止条件,递归方法中一定要接受参数

               ShowInOrder(node.Left);

               node.Show();

               ShowInOrder(node.Right);

           }

           public void Show()

           {  ShowInOrder(root); }

     }

       class A

       {  static void Main()

           {  BinaryTree b = new BinaryTree();

               Node node = new Node(5);

               b.GenerateTree(node);

               node = new Node(13);

               b.GenerateTree(node);

               node = new Node(6);

               b.GenerateTree(node);

               node = new Node(26);

               b.GenerateTree(node);

               node = new Node(7);

               b.GenerateTree(node);

               b.Show();  }  }  }   结果:5,6,7,13,26

    单链表

       class Node

       { int a;

          public Node(int a) 

          {  this.a=a; }

          public int A      

          {get{return a;}  set{a=value;} }

          public Node next;

       }

       class LinkedList

       { Node header;

          public void Generate(int x)

          {  if(header==null)

                 header=new Node(x);

              else

              {  Node n = new Node(x);

                 if(n.A < header.A)

                 {  n.next = header;

                     header=n;

                     return;

                 }

                 Node tmp=header;

                 Node t=header;

                 while(tmp.A < n.A)

                 {  t=tmp; //为了下一次循环

                     tmp=tmp.next;

                     if(tmp==null)

                        break;

                 }

                 t.next=n;

                 n.next=tmp;

              }

          }

          public void Out()

          {  Node tmp=header;

              while(tmp!=null)

              {  Console.WriteLine(tmp.A);

                 tmp = tmp.next;

              } } }

       class Test

       {  static void Main()

          {  LinkedList ll = new LinkedList();

              ll.Generate(6);

              ll.Generate(36);

             ll.Generate(26);

              ll.Generate(16);

              ll.Out();

          }  }  }

    反向链表

       class Link           //this class reverse the LinkedList

       { public int a;

          public Link next;

       }

       class createLink    //the class create the LinkedList

       {

          Link header=null;

          Link p = null;

          Link temp = null;

          Link l=null;      //Link k=null;

          Link g=null;

          public void create()

          { string str;

              int i;

              Console.WriteLine("Please enter number:");

              str=Console.ReadLine();

              while(str!="y")

              { i=Convert.ToInt32(str);

                 temp=new Link();

                 temp.a=i;

                 temp.next=null;

                   if(g==null)

                     g=temp;

                 if(header==null)

                     header=temp;

                 if(p==null)

                     p=temp;

                 else

                 { p.next=temp;

                     p=p.next;

                 }

                 Console.WriteLine("please enter number:");

                 str=Console.ReadLine();

              }

          }

          public void display()

          {  while(header!=null)

              {  Console.WriteLine(header.a);

                 header=header.next;

              }

          }

          public void reversed() // the mothod reversed the LinkedList

          { Link k=null;

              Link tmp=null;

              Link com =null;

              if(tmp==null)

                 tmp=header.next;

              while(tmp!=null)

              {  //           if(com==null)

    //            com=header;

                 l=tmp;

                 if(k==null)

                 {  header.next=null;

                     k=header;

                 }

                 com=header;

                 header=l;

                 tmp=l.next;

                 l.next=com;

              }

          }

          public void show()

          {  while(l!=null)

              {  Console.WriteLine(l.a);

                 l=l.next;

              } } }

       class Tester

       {  static void Main()

          {  createLink cl=new createLink();

              cl.create();

              //cl.display();

              cl.reversed();

              cl.show();

          } } }

    Stack 栈

       class Node

       { int a;

          public Node(int a)

          {  this.a=a; }

          public int A

          { get{return a;} set{a=value;} }

          public Node next;

       }

       class LinkedList

       { protected Node header;

          public void Generate(int x)

          {  if(header==null)

                 header=new Node(x);

              else

              {  Node n = new Node(x);

                 n.next=header;

                 header=n;

              }

          }

          public void Out()

          {  Node tmp=header;

              while(tmp!=null)

              {  Console.WriteLine(tmp.A);

                 tmp = tmp.next;

              } } }

       class Stack : LinkedList

       {  public void Push(int x)

          {  this.Generate(x); }

          public int Pop()

          { if(this.header == null)

                 return -1; // empty stack

              int n = header.A;

              header = header.next;

              return n;

          }

       }

       class Test

       {  static void Main()

          {  Stack ss = new Stack();

              ss.Push(7);

              ss.Push(78);

              ss.Push(9);

              ss.Push(2);

              int i = ss.Pop();

              while(i != -1)

              {  Console.WriteLine(i);

                 i = ss.Pop();

              } } } }

     

    C#基础

    ArrayList

            ArrayList al;

              al =new ArrayList();

              string s = Console.ReadLine();

              while(s !="q")

              { al.Add(s);

                 s = Console.ReadLine();

              }

              for(int i=0;i<al.Count;i++)

              Console.WriteLine(al[i].ToString());

    从键盘输入一个数组,并求最大

               int[] a;

                 Console.WriteLine("Pls input len:");

                 int len = Convert.ToInt32(Console.ReadLine());

                 a = new int[len];

                 Console.WriteLine("Pls input array");

                 for(int i=0;i<len;i++)

                 {  a[i]=Convert.ToInt32(Console.ReadLine()); }

                 for(int j=0;j<a.Length;j++)

                     Console.WriteLine(a[j]);

                 for(int k=0;k<a.Length;k++)

                 {  if(a[0]<a[k])

                    a[0]=a[k];

                   }  Console.WriteLine(a[0]);

    递归

              int fac (int n) 

              {  if(n==0) return 1;

                 return n*fac(n-1);

              }

    斐波那契数列第n项

              int fib (int n) 

              {  if(n==1) return 1;

                 if(n==2) return 1;

                 return fib(n-1)+fib(n-2);

              }

    递归求1加到100

              public int Fac(int n)

              {  if(n==1) return 1;

                 return n+Fac(n-1);

              }  

          static void Main()

          {  math f=new math();

              int s=f.Fac(100);

              Console.WriteLine(s);

          }

    求前24项斐波那契序列数

              static int fib(int n)

              {  if(n==1) return 1;

                 if(n==2) return 1;

                 return fib(n-1)+fib(n-2);

              }

             static void Main(string[] args)

             {  int t=0;

                 for(int i=1;i<25;i++)

              {  t=fib(i);

                 Console.WriteLine(t);

              } }

    汉诺塔

              static void Hanoi(string X, string Y,string Z,int n)

              {  if(n==1)

                 {  Console.WriteLine(X + "-->" +Z);

                      return;

                 }

                 Hanoi (X,Z,Y,n-1);

                 Console.WriteLine(X+"-->"+Z);三

                 Hanoi (Y,X,Z,n-1);

              }

          static void Main(string[] args)

          { Hanoi("A","B","C",5); }

    3位的水仙花数

              for(int i=100;i<1000;i++)

              {  int a=i/100; int c=i; int b=((i-c)/10);

                 if(i==a*a*a+b*b*b+c*c*c)

                     Console.WriteLine(i);

              }

    StringBuilder

                 class A

                 {  static void Main()

                     {  StringBuilder a=new StringBuilder();

                        a.Append ("asa");

                        a.Append ("www");

                        string s=a.ToString();

                        Console.WriteLine(s);

                    }

                 }      结果:asawww

    singleton设计模式

                 class A

                 {  private int v;

                     A(int x)

                     { v=x; }

                     public int V

                     { get{return v;}  }

                     static A c=null;

                     public static A fun(int n)

                     {  if(c==null)

                          c=new A(n);

                        return c;

                     }

                 }

                 class B

                 {  static void Main(string[] args)

                     {  A c=A.fun(2);

                        Console.WriteLine(c.V);

                        c=A.fun(8);

                        Console.WriteLine(c.V);

                     }

                 }      结果:2,2

     

    参考文章:http://blog.sina.com.cn/s/blog_534b270f01014pfp.html

  • 相关阅读:
    Linux进阶之正则,shell三剑客(grep,awk,sed),cut,sort,uniq
    生成下拉列表
    获取服务器时间
    Web窗体(WebForm)
    Session
    Cookie
    Server属性
    Response缓冲区
    小案例
    Web窗体(WebForm)的删除和修改
  • 原文地址:https://www.cnblogs.com/ecollab/p/2639838.html
Copyright © 2011-2022 走看看