日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
你知道C#排序的編寫及性能嗎?

在進行C#排序算法之前,我們先定義一個100位的隨機數(shù)列,好進行各種排序算法的性能測試。

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計與策劃設(shè)計,柳江網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:柳江等地區(qū)。柳江做網(wǎng)站價格咨詢:028-86922220

代碼如下:

 /// 
  /// 隨機生成100位的數(shù)組
///
  /// 返回生成數(shù)組
  public static int[] RandomArray()
  {
Random ran = new Random();
int[] arr = new int[100];
int tem;
for (int i = 0; i < 100; i++)
{
 tem = ran.Next(1, 100);
 arr[i] = tem;
}
return arr;
  }

1.冒泡排序 (Bubble Sort)

基礎(chǔ)思想:將相鄰的記錄的關(guān)鍵碼進行比較,若前面記錄的關(guān)鍵碼大于后面記錄的關(guān)鍵碼,則將它們交換,否則不交換。

代碼如下:

/// 
 /// 冒泡排序算法
 ///
 public class BubbleSort : IAction
 {
  #region IAction 成員
  public void Action()
  {
int[] array = Program.RandomArray();
for (int a = 0; a < array.Length; a++)
{
 int item = 0;
 for (int b = array.Length - 1; b > a; b--)
 {
  if (array[b] < array[b - 1])
  {
item = array[b];
array[b] = array[b - 1];
array[b - 1] = item;
  }
 }
}
  }
  #endregion
 }

2.直接插入排序

基礎(chǔ)思想: 順序的將待排序的記錄安關(guān)鍵碼的大小插入到已排序的記錄子序列的適當位置。子序列的記錄個數(shù)從1開始逐漸增大,當子序列記錄個數(shù)于首先表中的記錄個數(shù)相同時排序完畢。

代碼如下: 

/// 
 /// 直接插入排序算法
 ///
 public class DirectInsertSort : IAction
 {

  #region IAction 成員

  public void Action()
  {
int[] array = Program.RandomArray();
for (int i = 1; i < array.Length; i++)
{
 if (array[i] < array[i - 1])
 {
  int tem = array[i];
  int j = 0;
  for (j = i - 1; j >= 0 && tem < array[j]; j--)
  {
array[j + 1] = array[j];
  }
  array[j + 1] = tem;
 }
}
  }
  #endregion
 }

3.簡單選擇排序

基礎(chǔ)思想:從待排序的記錄序列中選擇關(guān)鍵碼最?。ɑ颍┳畲蟮挠涗洸⑺残蛄兄械牡谝粋€記錄交換位置;然后從不包括第一個位置上的記錄序列中選擇關(guān)鍵碼最?。ɑ蜃畲螅┑挠涗洸⑺残蛄兄械牡?個記錄交換位置,如此重復(fù),直到序列只剩下一個記錄為止。

代碼如下:

/// 
 /// 簡單選擇排序算法
 ///
 public class SimpleSelectSort : IAction
 {
  #region IAction 成員
  public void Action()
  {
int[] array = Program.RandomArray();
 int tmp = 0;
 int t = 0;
 for (int i = 0; i < array.Length; i++)
 {
  t = i;
  for (int j = i + 1; j < array.Length; j++)
  {
if (array[t] > array[j])
{
 t = j;
}
  }
  tmp = array[i];
  array[i] = array[t];
  array[t] = tmp;
  }
  #endregion
 }

4.快速排序

基礎(chǔ)思想:通過不斷比較關(guān)鍵碼,以某咯記錄為界(該記錄成為支點),將待排序列分成兩部分。其中,一小部分滿足所有記錄的關(guān)鍵碼都大于或等于支點記錄為界將待排序列按關(guān)鍵碼中分成兩部分的過程,稱為一次劃分,直到整個序列按關(guān)鍵碼有序為止。

代碼如下:

 

 ///


 /// 快速排序算法
 ///
 public class QuickSort : IAction
 {

  #region IAction 成員

  public void Action()
  {
int[] array = Program.RandomArray();

QuickSortArray(array, 0, array.Length - 1);
  }

  private void QuickSortArray(int[] arr, int low, int high)
  {
int i = low;
int j = high;
int tmp = arr[low];
while (low < high)
{
 while ((low < high) && arr[high] >= tmp)
 {
  --high;
 }
 arr[low] = arr[high];
 while ((low < high) && arr[low] <= tmp)
 {
  ++low;
 }
 arr[high] = arr[low];
 --high;
}
arr[low] = tmp;
if (i < low - 1)
{
 QuickSortArray(arr, i, low - 1);
}
if (j > low + 1)
{
 QuickSortArray(arr, low + 1, j);
}
  }

  #endregion
 }

通過上面的描述,我們對C#幾個主要的排序算法了解清楚了 接下來開始解析它們其中的奧妙吧。其實在此之前 我一直都喜歡使用冒泡來排序,不過通過CodeTimer測試了下  結(jié)果如下:

總結(jié):從C#幾個常用的排序算法中,我們常用的冒泡法消耗的系統(tǒng)時間是最多了,相比之下快速排序所用的時間倒是很快速。

希望能和大家一起探討.NET中的神奇,享受編程給我們帶來的樂趣~


網(wǎng)站題目:你知道C#排序的編寫及性能嗎?
路徑分享:http://m.5511xx.com/article/cdopcec.html