c#實(shí)現(xiàn)選擇排序的示例
1.工作原理(算法思路)
- 給定一個(gè)待排序數(shù)組,找到數(shù)組中最小的那個(gè)元素
- 如果最小元素不是待排序數(shù)組的第一個(gè)元素,則將其和第一個(gè)元素互換
- 在剩下的元素中,重復(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ù)組的大小呈線性關(guān)系,其他的排序算法對(duì)數(shù)據(jù)移動(dòng)量都是線性對(duì)數(shù)級(jí)別或平方級(jí)別的。
以上就是c#實(shí)現(xiàn)選擇排序的示例的詳細(xì)內(nèi)容,更多關(guān)于c# 選擇排序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
WPF實(shí)現(xiàn)帶模糊搜索的DataGrid的示例代碼
這篇文章主要為大家詳細(xì)介紹了WPF如何實(shí)現(xiàn)帶模糊搜索的DataGrid,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02
Unity的BuildPlayerProcessor實(shí)用案例深入解析
這篇文章主要為大家介紹了Unity的BuildPlayerProcessor實(shí)用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
C#多線程學(xué)習(xí)之(五)使用定時(shí)器進(jìn)行多線程的自動(dòng)管理
這篇文章主要介紹了C#多線程學(xué)習(xí)之使用定時(shí)器進(jìn)行多線程的自動(dòng)管理,實(shí)例分析了C#使用timer定時(shí)器類實(shí)現(xiàn)針對(duì)多線程的自動(dòng)管理功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
C#語(yǔ)句先后順序?qū)Τ绦虻慕Y(jié)果有影響嗎
有朋友問(wèn)我,C#中C#語(yǔ)句先后順序影響程序的結(jié)果嗎?告訴大家,答案是肯定的,絕對(duì)影響程序的結(jié)果,所以在程序中一定要注意C#語(yǔ)句的順序2015-10-10
Winform實(shí)現(xiàn)鼠標(biāo)可穿透的窗體鏤空效果
這篇文章主要介紹了Winform實(shí)現(xiàn)鼠標(biāo)可穿透的窗體鏤空效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10

