亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c#實(shí)現(xiàn)選擇排序的示例

 更新時(shí)間:2020年10月09日 08:36:06   作者:歐氣檸檬  
這篇文章主要介紹了c#實(shí)現(xiàn)選擇排序的示例,幫助大家更好的理解和使用排序算法,感興趣的朋友可以了解下

1.工作原理(算法思路)

  1. 給定一個(gè)待排序數(shù)組,找到數(shù)組中最小的那個(gè)元素
  2. 如果最小元素不是待排序數(shù)組的第一個(gè)元素,則將其和第一個(gè)元素互換
  3. 在剩下的元素中,重復(fù)1、2過(guò)程,直到排序完成。

2.動(dòng)圖演示

3.C#代碼實(shí)現(xiàn)

根據(jù)原理設(shè)計(jì)算法:

 class Program
{
  
  //選擇排序法
  private static void chooseSort(int[] array)
  {
    //第一個(gè)for循環(huán):每一次循環(huán)完成后得到的當(dāng)前的最大元素都與第i位做交換
    for (int i = 0; i < array.Length; i++)
    {
      //min為最小元素的索引
      int min = i;

      //第二個(gè)for循環(huán):將當(dāng)前的array[j]與array[min]作比較,如果array[j]更小,則替換min的當(dāng)前索引
      for (int j = i + 1; j < array.Length; j++)
      {
        if (array[min] > array[j])
        {
          min = j;
        }
      }
      //當(dāng)?shù)诙€(gè)for循環(huán)完成時(shí),array[min]中存儲(chǔ)的就是當(dāng)前最小元素
      //將array[min]與array[i]交換
      int temp = array[i];
      array[i] = array[min];
      array[min] = temp;
    }
  }

  //打印輸出數(shù)組
  private static void printArray(int[] array)
  {
    foreach (int item in array)
    {
      Console.Write(item + "\t");
    }
    Console.WriteLine();
  }

  static void Main(string[] args)
  {
    int[] array = new int[10] { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
    printArray(array);
    chooseSort(array);
    printArray(array);
    Console.ReadKey();

  }

}

輸出結(jié)果

4.性能分析

1)復(fù)雜度

2)選擇排序法特點(diǎn)

  • 執(zhí)行的比較和交換次數(shù)

比較: N*(N-1)/2
交換: N

  • 運(yùn)行時(shí)間與輸入無(wú)關(guān)

在每一次的for循環(huán)結(jié)束后并不能為下一次的循環(huán)提供有效信息。這種性質(zhì)在某些時(shí)候是一種缺陷。在數(shù)組大小相同時(shí),當(dāng)一個(gè)幾乎已經(jīng)有序的數(shù)組使用選擇排序法花費(fèi)的時(shí)間和無(wú)序數(shù)組所花費(fèi)的時(shí)間是一致的。

  • 數(shù)據(jù)的移動(dòng)量最少

交換的次數(shù)和數(shù)組的大小呈線(xiàn)性關(guān)系,其他的排序算法對(duì)數(shù)據(jù)移動(dòng)量都是線(xiàn)性對(duì)數(shù)級(jí)別或平方級(jí)別的。

以上就是c#實(shí)現(xiàn)選擇排序的示例的詳細(xì)內(nèi)容,更多關(guān)于c# 選擇排序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論