成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你知道C#排序的編寫及性能嗎?

開發(fā) 后端
本文將帶大家復(fù)習(xí)了一下C#的數(shù)據(jù)結(jié)構(gòu)中有關(guān)C#排序算法,其中主要有冒泡排序,直接插入排序,簡單選擇排序和快速排序。

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

代碼如下:

 /// 
  /// 隨機(jī)生成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)鍵碼進(jì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)鍵碼的大小插入到已排序的記錄子序列的適當(dāng)位置。子序列的記錄個(gè)數(shù)從1開始逐漸增大,當(dāng)子序列記錄個(gè)數(shù)于首先表中的記錄個(gè)數(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)鍵碼最小(或)最大的記錄并將它也序列中的第一個(gè)記錄交換位置;然后從不包括第一個(gè)位置上的記錄序列中選擇關(guān)鍵碼最小(或最大)的記錄并將它也序列中的第2個(gè)記錄交換位置,如此重復(fù),直到序列只剩下一個(gè)記錄為止。

代碼如下:

/// 
 /// 簡單選擇排序算法
 ///

 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)鍵碼,以某咯記錄為界(該記錄成為支點(diǎn)),將待排序列分成兩部分。其中,一小部分滿足所有記錄的關(guān)鍵碼都大于或等于支點(diǎn)記錄為界將待排序列按關(guān)鍵碼中分成兩部分的過程,稱為一次劃分,直到整個(gè)序列按關(guān)鍵碼有序?yàn)橹埂?/P>

代碼如下:

 

 ///


 /// 快速排序算法
 ///

 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
 }

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

C#排序結(jié)果

C#排序結(jié)果

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

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

【編輯推薦】

  1. C# 4.0中泛型協(xié)變性和逆變性詳解
  2. C#中用鼠標(biāo)移動(dòng)頁面功能的實(shí)現(xiàn)
  3. C# 2010命名和可選參數(shù)的新特性
  4. 討論:C# 4.0新特性dynamic有何用?
  5. C# 4.0新特性dynamic作用淺析
責(zé)任編輯:彭凡 來源: cnblogs
相關(guān)推薦

2024-09-12 08:20:39

2024-11-01 10:48:01

C#WPF程序

2021-04-13 05:36:18

C#null 可控

2018-11-21 10:47:46

排序算法TimsortPython

2021-04-14 06:53:52

C# 修飾符 Public

2024-04-23 08:08:04

C#

2021-07-27 06:49:11

C#存儲(chǔ)檢索

2021-07-11 18:04:04

C語言

2024-05-10 07:44:23

C#進(jìn)程程序

2024-06-28 09:37:14

技巧.NET開發(fā)

2024-04-17 08:05:18

C#并發(fā)設(shè)計(jì)

2024-04-24 11:24:43

C#數(shù)據(jù)去重

2023-09-26 07:38:53

c#Lambda表達(dá)式

2013-03-19 09:48:38

C#

2023-01-31 09:02:24

JSVMVR

2020-07-15 14:51:39

代碼C+開發(fā)

2024-09-03 08:06:30

AQS線程代碼

2025-04-02 08:47:23

DOM文檔結(jié)構(gòu)API

2022-06-01 07:10:43

遞歸字典極限

2020-05-15 14:34:16

C語言丹尼斯 · 里奇開發(fā)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩久久网| 美女在线视频一区二区三区 | 国产日韩一区二区 | 亚洲网站在线观看 | 成人在线免费网站 | 久久久久国产精品一区二区 | 国产成人在线一区 | 亚洲一区在线观看视频 | 色姑娘综合网 | 在线播放精品视频 | 国产乱码久久久久久 | 一级国产精品一级国产精品片 | 成人免费视频7777777 | 日韩av一二三区 | 成人国产精品视频 | 农村黄性色生活片 | 操久久| 97国产精品 | 亚洲精品国产综合区久久久久久久 | 成人在线视频免费看 | 国产精品美女久久久久aⅴ国产馆 | 亚洲午夜精品一区二区三区他趣 | 九色国产| 在线国产视频 | 欧美中文字幕一区二区 | 国产午夜精品久久久久 | 范冰冰一级做a爰片久久毛片 | 亚洲一区亚洲二区 | 精品一区二区观看 | 久久日韩精品一区二区三区 | 四虎伊人 | 成人不卡 | 久久久久成人精品 | 亚州综合在线 | 亚洲人成人网 | 亚洲国产精品久久久久 | 亚洲视频中文字幕 | 久久久久无码国产精品一区 | 在线视频中文字幕 | 中文字幕国产一区 | 中文字字幕一区二区三区四区五区 |