選擇排序法
1.作業原理(演算法思路)
- 給定一個待排序陣列,找到陣列中最小的那個元素
- 如果最小元素不是待排序陣列的第一個元素,則將其和第一個元素互換
- 在剩下的元素中,重復1、2程序,直到排序完成,
2.動圖演示

3.C#代碼實作
根據原理設計演算法:
class Program
{
//選擇排序法
private static void chooseSort(int[] array)
{
//第一個for回圈:每一次回圈完成后得到的當前的最大元素都與第i位做交換
for (int i = 0; i < array.Length; i++)
{
//min為最小元素的索引
int min = i;
//第二個for回圈:將當前的array[j]與array[min]作比較,如果array[j]更小,則替換min的當前索引
for (int j = i + 1; j < array.Length; j++)
{
if (array[min] > array[j])
{
min = j;
}
}
//當第二個for回圈完成時,array[min]中存盤的就是當前最小元素
//將array[min]與array[i]交換
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
//列印輸出陣列
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();
}
}
4.性能分析
1)復雜度

2)選擇排序法特點
-
執行的比較和交換次數
比較: N*(N-1)/2
交換: N -
運行時間與輸入無關
在每一次的for回圈結束后并不能為下一次的回圈提供有效資訊,這種性質在某些時候是一種缺陷,在陣列大小相同時,當一個幾乎已經有序的陣列使用選擇排序法花費的時間和無序陣列所花費的時間是一致的, -
資料的移動量最少
交換的次數和陣列的大小呈線性關系,其他的排序演算法對資料移動量都是線性對數級別或平方級別的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/163417.html
標籤:其他
上一篇:《黑客:計算機革命的英雄》讀后感
