插入排序算法是一种简答的排序算法,也称之为直接插入排序算法,是一种稳定的排序算法,对局部有序的数据具有较高的效率
插入排序是一种对少量数据进行排序的有效算法,最好情况,待排序序列有序 时间复杂度为0(n),最坏情况,待排序序列为逆序 时间复杂度为0(n*n)
算法思想是:每一次从无序序列中拿出一个数据,将它放到已排序的序列的正确位置,如此重复,直到所有无序序列中的数据都找到了正确的位置
下面用一张图来描述这个过程
接下来就用C语言实现这个过程
#include<stdio.h>
void insertSort(int arr[],int len){
for (int i = 1; i < len; i++)
{
if (arr[i]<arr[i-1]){
int temp = arr[i]; //利用temp保存当前i位置的数据值
int j = i - 1;
for (; j >= 0 && arr[j] > temp ; j--)
{
//数据进行后移
arr[j+1] = arr[j];
}
arr[j + 1] = temp;
}
}
}
void printArray(int arr[],int len){
for (int i = 0; i < len; i++)
{
printf("%d\n",arr[i]);
}
}
void test01(){
int arr[] = {5,9,6,1,3,7};
int len = sizeof(arr)/sizeof(int);
insertSort(arr,len);
//打印数组
printArray(arr,len);
}
int main(){
test01();
return 0;
}