提升查询和排序的效率

查询算法:普通查询,二分查询,插值查询,二叉树查询.
排序算法:冒泡排序,插入排序,希尔排序,快拍排序.
普通查询:for循环:

      例如: List<int> GetData()

       {
        str = new int[500 * 1024 * 3];
        List<int> list = new List<int>(5 * 1024 * 3);
        for (int i = 0; i < 5 * 1024 * 3; i++)
        {
          if (i < 5 * 1024)
          {
            list.Add(((i + 1) % 2) * (i + 1) / 3);
          }
          else if (i < 5 * 1024 * 2)
          {
            list.Add(i);
          }
          else
          {
             Random rand = new Random();
             list.Add(rand.Next(10000));
          }
        }
          return list;
       }
       List<int> list = p.GetData();

       Stopwatch sw = new Stopwatch();

         sw.Start();
         for (int i = 1; i < list.Count; i++)
       {
          if (list[i] == 153222)
          {
            Console.WriteLine(list[i]); // static 0.011 new 0.012
          }
       }
       sw.Stop();
       Console.WriteLine(sw.Elapsed);

    冒泡排序:
    例如:
      List<int> Swap(List<int> list, int i, int j)
      {
         int temp = list[i]; // 0
         list[i] = list[j]; // 0 = 1
           list[j] = temp; //
         return list;
      }
      private int privation(List<int> list, int low, int high)
      {
         int priotkey = list[low];
         while (low < high)
         {
            while (low < high && priotkey <= list[high])
            {
              high--;
            }
            Swap(list, low, high);
            while (low < high && priotkey >= list[low])
            {
                low++;
            }
            Swap(list, low, high);
        }
         return low;
      }
      排序 冒泡
      List<int> BulletSort(List<int> list)
      {
        for (int i = 0; i < list.Count; i++) // 1 3 6 4 8 9 3 10 52 80 6 0 793
        {
          for (int j = i + 1; j < list.Count; j++)
          {
            if (list[i] > list[j]) //1 > 0
            {
              Swap(list, i, j);
            }
          }
        }
        return list;
       }
      List<int> listsort = p.BulletSort(list); // 15000 1.29

    查找二分:
    static int Binary_Search(List<int> list, int n, int key)
    {
      int low, high, mid;
      low = 1;
      high = n;
      while (low < high)
      {
        mid = (low + high) / 2;

        if (key < list[mid])
        {
          high = mid - 1;
        }
        else if (key > list[mid])
        {
          low = mid + 1;
        }
        else
        {
          return list[mid];
        }
      }
      return 0;
    }

    List<int> listsort1 = p.QuickSort(list, 0, list.Count - 1); // 15000 0.13
    Console.WriteLine(Binary_Search(listsort1, listsort1.Count, 652)); // 15000 0.18

    快排:

      List<int> QuickSort(List<int> list, int low, int high) // 0 15359
      {
        int priot;
        if (low < high)
        {
          priot = privation(list, low, high);
          QuickSort(list, low, priot - 1);
          QuickSort(list, priot + 1, high);
        }
        return list;
      }
      List<int> listsort1 = p.QuickSort(list, 0, list.Count - 1); // 15000 0.13

两种用于非泛型集合:
    (1)转换类cast():将对象转换成泛型(返回可被枚举的对象)或规定类型.
          mscorlib核心技术-->system.collections集合.
          enqueue(object)-->将对象添加到system.collections.queue的结尾处.
          dequeue-->移除并返回位于system.collections.queue开始出的对象.
          stack-->后进先出,堆载型成(表示对象的简单的后进先出非泛型集合).
     (2)dt.rows.asqueryable将对象转换成泛型或规定类型.

文本文件查询:File.ReadAllLines("文件名") where !line.startswith("#");-->舍弃第一行
       Let parts=line.split(',') select new {};
       注释:Let相当于into.

设计模式:ForEach操作符=>相当于select投影到另一个对象,传统的ForEach只是迭代,而foreach操作符可以对源序列中的每个元素进行遍历并执行某一传统操作.

分页(分区):skip跳过多少条数据.take取多少数据.

序列:IEnumberable.Range()--->生成指定范围内连续的整数的序列.

ORM工具---->object relation mapping映射,
       partial=>这个关键字表示分布类-->Model-->ADO.NET-->DataSet-->List<T>-->增删查改(ADO.NET实体数据模型)-->EF框架.
返回一条元素:single()方法和first().
savechanges()相当于commit().

非托管资源:database(数据库)需释放资源,EF实体框架,office(com对象),gdi(绘图).
扩展管理器--->联机库更新--->NUGet(程序表管理器).

EF框架由三种内容构成:(1)SSDL Content储存数据模型(偏向数据库).
            (2)CSDL Content结构定义模型(偏向程序实体模型).
                              (3)C-S Mapping content储存结构映射模型(关联).

 

 

posted @ 2014-01-14 16:32  十年尘梦  阅读(355)  评论(0编辑  收藏  举报