插入排序法
1.作業原理(演算法思路)
新建一個指標,指標左邊的所有元素都是有序的,但是他們的位置并不是最終位置,一個指標從左向右掃描,若指標所在處的元素比左邊元素小,則將該元素向前浮動至適當位置,使指標左側元素仍然保持有序,當指標掃描到整個陣列元素的末尾時,陣列排序完成,
2.動圖演示

3.C#代碼實作
根據原理設計演算法:
class Program
{
//插入排序法
public static void insertSort(int[] array)
{
//for回圈:i作為指標,進行從左到右掃描資料的作業
//指標i從1開始掃描,因為i=0時指標左側無元素
for (int i = 1; i < array.Length; i++)
{
//temp作為指標鍵值
int temp = array[i];
//新建變數j,從i開始向左掃描已經有序的元素,并與temp比較
//若temp小于掃描元素,則將j指標元素向右移位騰出空間
int j = i;
while (j > 0 && array[j - 1] > temp)
{
array[j] = array[j - 1];
j--;
}
//回圈完成后將temp放在j指標位置,完成本次插入
array[j] = temp;
}
}
//列印陣列
public 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);
insertSort(array);
printArray(array);
Console.ReadKey();
}
}
輸出結果:

4.性能分析
1)復雜度

2)插入排序法特點
- 在陣列元素規模較小的時候,插入排序法的運行效率很高,其經常用在一些其他排序方法中(比如歸并排序以及快速排序)來對排序進行優化,
- 不同于選擇排序法,當一個陣列幾乎有序的時候,插入排序法所需要的時間要比其他的排序法快得多,因此插入排序法的排序時間取決于陣列元素的初始順序,在最好的情況下,插入排序法運行時間能達到線性級別,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/163585.html
標籤:.NET技术
上一篇:.NET Standard多目標框架類別庫參考繼承和函式呼叫規則
下一篇:socket高并發問題
