插入排序的基本思想:
把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。
思路:
当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移即可。
代码部分:
void InsertSort(int *arr,int size)
{//升序
//assert(arr);
int i=0;
int key=0;
int j=0;
for(i=1;i<size;i++)
{
key=arr[i];
j=i-1;
while(j>=0&&key<arr[j])
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=key;
}
}
时间复杂度:O(N^2)
空间复杂度:O(1)