继选择排序之后,新鲜出炉插入排序。
思想
顾名思义,插入排序是采用插入的方式进行排序。那么,插入是怎样的一个方式呢?
插入排序的基本操作就是将一个数据插入到已经排好序的数组中,然后形成一个新的有序的数组。需要将乱序数组分成两部分,分别为有序和无序两个部分。如下所示:
{ {a1}, {a2, a3, a4, a5} }
{ {a1, a2}, {a2, a3, a4, a5} }
...
{ {a1, a2, a3, a4, a5}, { } }
每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入的位置,将该元素插入到合适的位置中。
伪代码
InsertSort(A ,n )
输入:n个数的数组A
输出:按照递增顺序排好序的数组A
for j←2 to n do
x ← A[j]
i ← j-1
while i>=0 and x<A[i] do
A[i + 1] ← A[i]
i←i-1
A[i+1] ← x
代码
void insertSort(int numArr[], int arrSize)
{
int i,j,temp = 0;
for(j = 1; j < arrSize; j++)