三言兩語講排序演算法——插入排序
插入排序
原理:
插入排序是一種比較簡單的排序演算法,它將待排列的陣列構造成無序和有序兩部分,通過抽取無序部分的元素,作比較之後插入到有序部分的合適位置,實現有序部分的增長,無序部分的減少,直到所有元素變為有序。
過程步驟:
1.在一組陣列中,第一個元素視為有序,其餘為無序。
2.從第二個元素起,將陣列的有序部分從後向前掃描,進行大小的比較。
3.如果待排序的元素小於有序部分的元素,則向後移動到下一位置。
4.重複步驟2和3,直到無序部分為空,陣列全部變為有序,排列完畢。
演算法分析:
時間複雜度:,插入排序的最壞情況仍然是按照次排列來完成整個陣列排序的。
空間複雜度:,插入排序的額外記憶體的使用不隨著陣列規模的變化而變化。
C#程式碼示例:
/*
Insertion Sort
插入排序
*/
using System;
namespace Insertion_sort
{
class cInsertion
{
public void Sort(int[] value)
{
int preIndex,current;
for(int i = 1; i < value.Length; i++)
{
preIndex = i - 1;
current = value[i];
while(preIndex >= 0 && value[preIndex] > current)
{
value[preIndex + 1] = value[preIndex];
preIndex--;
}
value[preIndex + 1] = current;
}
}
}
class Insertion
{
static void Main(string[] args)
{
int[] data = new int[10]{7,2,9,1,3,8,6,10,5,4};
cInsertion ci = new cInsertion();
ci.Sort(data);
for(int i = 0; i < data.Length;i++)
{
Console.WriteLine(data[i]);
}
Console.ReadKey();
}
}
}
相關文章
- 排序演算法——插入排序排序演算法
- 排序演算法__折半插入排序排序演算法
- 【演算法】插入排序演算法排序
- PHP 排序演算法之插入排序PHP排序演算法
- 排序演算法之折半插入排序排序演算法
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 排序演算法:插入排序演算法 PHP 版排序演算法PHP
- 常用演算法-插入排序演算法排序
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法入門之「插入排序」排序演算法
- 排序演算法——直接插入排序排序演算法
- 排序演算法-直接插入排序排序演算法
- 實時插入排序演算法排序演算法
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 排序演算法(3)插入排序(Insertion Sort)排序演算法
- Java常見排序演算法之插入排序Java排序演算法
- 排序演算法之「插入排序(Insertion Sort)」排序演算法
- 排序演算法:二分插入排序排序演算法
- 排序演算法——二分插入排序排序演算法
- 畫江湖之演算法篇【排序演算法】插入排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 插入排序演算法排序
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- python演算法 - 插入排序演算法Python演算法排序
- 插入排序排序排序
- 排序演算法之——二分插入排序演算法排序演算法
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- PHP 演算法02之插入排序PHP演算法排序
- 直接插入排序演算法排序演算法
- 從演算法開始[插入排序]演算法排序
- 小白懂演算法之插入排序演算法排序
- 從演算法開始(插入排序)演算法排序
- 死磕演算法之插入排序演算法排序
- [java]插入排序及折半插入排序Java排序
- 【一起學習排序演算法】4 插入排序排序演算法
- Java實現氣泡排序和插入排序演算法Java排序演算法
- 排序之插入排序排序