排序算法--插入排序(Insertion Sort)_C#程序實現

排序算法--插入排序(Insertion Sort)_C#程序實現

  排序(Sort)是計算機程序設計中的一種重要操做,也是平常生活中常常遇到的問題。例如,字典中的單詞是以字母的順序排列,不然,使用起來很是困難。一樣,存儲在計算機中的數據的次序,對於處理這些數據的算法的速度和簡便性而言,也具備很是深遠的意義。算法

1.基本概念

  排序是把一個記錄(在排序中把數據元素稱爲記錄)集合或序列從新排列成按記錄的某個數據項值遞增(或遞減)的序列。數組

2插入排序(Insertion Sort)

  插入排序(direct Insert Sort)的基本思想是:順序地將待排序的記錄按其關鍵碼的大小插入到已排序的記錄子序列的適當位置。子序列的記錄個數從1 開始逐漸增大,當子序列的記錄個數與順序表中的記錄個數相同時排序完畢。 測試

2.1算法描述

通常來講,插入排序都採用in-place在數組上實現。具體算法描述以下:spa

  • 從第一個元素開始,該元素能夠認爲已經被排序;
  • 取出下一個元素,在已經排序的元素序列中從後向前掃描;
  • 若是該元素(已排序)大於新元素,將該元素移到下一位置;
  • 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置;
  • 將新元素插入到該位置後;
  • 重複步驟2~5。

2.2動態圖演示

 

2.3C#代碼實現插入排序

插入排序

 1         /// <summary>
 2         /// 插入排序
 3         /// </summary>
 4         /// <param name="array"></param>
 5         /// <returns></returns>
 6         private static int[] InsertSort(int[] array)
 7         {
 8             for (int i = 1; i < array.Length; i++)
 9             {
10                 int insertVal = array[i];
11                 int insertIndex = i - 1;
12                 while (insertIndex >= 0 && insertVal < array[insertIndex])
13                 {
14                     array[insertIndex + 1] = array[insertIndex];
15                     insertIndex--;      
16                 }
17                 array[insertIndex + 1] = insertVal;
18                 printArray(array);
19                 Console.WriteLine("" + (i) + "");
20             }
21             return array;
22         }

打印數組

 1         /// <summary>
 2         /// 打印數組
 3         /// </summary>
 4         /// <param name="array"></param>
 5         private static void printArray(int[] array)
 6         {
 7             if (array == null || array.Length <= 0)
 8             {
 9                 return;
10             }
11             for (int i = 0; i < array.Length; i++)
12             {
13                 Console.Write("["+array[i]+"]"+",");
14             }
15         }

測試代碼:

1             //插入排序
2             int[] arrayTest3 = new int[] { 9, 8, 5, 6, 7, 4, 3, 2, 1 };
3             Console.WriteLine("\n------------原數組--------------");
4             printArray(arrayTest3);
5             Console.WriteLine("\n------------插入排序--------------");
6             int[] resultArray3 = InsertSort(arrayTest3);
7             Console.WriteLine("排序結果:");
8             printArray(resultArray3);

運行結果:

相關文章
相關標籤/搜索