奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

c#實現sunday算法實例

時間:2024-08-07 13:51:47 C語言 我要投稿
  • 相關推薦

c#實現sunday算法實例

  Sunday算法思想跟BM算法很相似,在匹配失敗時關注的是文本串中參加匹配的最末位字符的下一位字符,下面小編為大家整理了c#實現sunday算法實例,希望能幫到大家!

  因正則表達式搜索總是出現死循環,開始考慮改為其他搜索方式,因為.net自帶的IndexOf默認只能找到第一個或最后一個,如果要把全部的匹配項都找出來,還需要自己寫循環SubString,所以想找下有沒有現成的,就發現了在這個領域里,BM算法是王道,而sunday算法據說是目前最好的改進版,這一點我沒有從國外的網站尤其是wiki上找到印證,但中文談論sunday的文章很多,我就姑且認為它是最好的吧。

  復制代碼 代碼如下:

  public static int SundaySearch(string text, string pattern)

  {

  int i = 0;

  int j = 0;

  int m = pattern.Length ;

  int matchPosition = i;

  while (i < text.Length && j < pattern.Length)

  {

  if (text[i] == pattern[j])

  {

  i++;

  j++;

  }

  else

  {

  if(m==text.Length-1)break;

  int k = pattern.Length - 1;

  while (k >= 0 && text[m ] != pattern[k])

  {

  k--;

  }

  int gap = pattern.Length - k;

  i += gap;

  m = i + pattern.Length;

  if (m > text.Length) m = text.Length - 1;

  matchPosition = i;

  j = 0;

  }

  }

  if (i <= text.Length)

  {

  return matchPosition;

  }

  return -1;

  }

  好了,現在測試下性能:

  復制代碼 代碼如下:

  public static void PerformanceTest()

  {

  StreamReader reader = new StreamReader("D:LogConfiguration.xml", Encoding.ASCII);

  string context = reader.ReadToEnd();

  string pattern = "xxxx";

  int count = 1000*10;

  Stopwatch watch=new Stopwatch();

  //watch.Start();

  //for (int i = 0; i < count; i++)

  //{

  // int pos= Sunday.GetPositionFirst(context, pattern, true);

  //}

  //watch.Stop();

  //Console.WriteLine(watch.ElapsedMilliseconds);

  watch.Reset();

  watch.Start();

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

  {

  int pos = context.IndexOf(pattern);

  }

  watch.Stop();

  Console.WriteLine(watch.ElapsedMilliseconds);

  watch.Reset();

  watch.Start();

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

  {

  int pos = Sunday.SundaySearch(context, pattern);

  }

  watch.Stop();

  Console.WriteLine(watch.ElapsedMilliseconds);

  }

  在可以找到匹配與不能找到匹配兩種情況下,sunday算法耗時大概是indexof的20%左右。算法確實有用。

  但千萬不要使用substring來實現算法,那樣會新生成很多字符串中間變量,算法帶來的好處遠遠不如分配內存復制字符串的消耗大,注釋掉的部分就是使用substring實現的,比indexof慢很多。

【c#實現sunday算法實例】相關文章:

C#實現協同過濾算法的實例代碼06-19

C語言中實現KMP算法實例08-09

C語言實現歸并排序算法實例09-18

php:樹形結構的算法實例10-18

Java實現多繼承的實例07-18

C語言冒泡排序算法實例06-15

C#數據結構之循環鏈表的實例代碼10-22

PHP實現抽獎概率算法09-13

權重隨機算法的java實現08-13

C#抽象工廠模式的幾種實現方法及比較10-20

主站蜘蛛池模板: 富锦市| 化州市| 衡南县| 石门县| 郯城县| 庆阳市| 郓城县| 阳原县| 桐柏县| 昌吉市| 南皮县| 满洲里市| 靖远县| 商丘市| 安溪县| 柳江县| 谢通门县| 二手房| 大厂| 健康| 屯门区| 高雄市| 肥乡县| 天津市| 万山特区| 凤翔县| 贵定县| 内黄县| 林甸县| 克什克腾旗| 龙南县| 高密市| 乌拉特中旗| 专栏| 连州市| 广州市| 天长市| 徐水县| 揭西县| 深州市| 丰顺县|