数据结构与算法之直接插入排序
原创
©著作权归作者所有:来自51CTO博客作者wx63dcd9d7dd8a8的原创作品,请联系作者获取转载授权,否则将追究法律责任
数据结构与算法之直接插入排序
- 前提条件
- 简介
- 直接插入排序算法
- 完整代码
前提条件
简介
- 直接插入排序(Straight Insertion Sort)是一种最简单且稳定的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。
- 对于个元素,一共需要进行轮比较,而第k轮比较需要进行k次数组元素的两两比较,因此共需要进行的比较次数为:,所以插入排序的时间复杂度同冒泡排序一样,也为
直接插入排序算法
void insertSort(int data[],int n)
/*直接插入排序*/
{
int i,j;
int temp;
for ( i = 1; i < n; i++)
{
if(data[i]<data[i-1])
{
/*若后一个元素小于前一个元素,位置互换*/
temp=data[i];
data[i]=data[i-1];
/*
位置互换后,若前面还有元素,则还要与前面元素比较,
若前面元素还有比当前元素小的元素,还需要位置互换
*/
for ( j = i-2; j >=0 && data[j]>temp; j--)
{
data[j+1]=data[j];
}
data[j+1]=temp;
}
}
}
完整代码
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
void insertSort(int data[],int n)
/*直接插入排序*/
{
int i,j;
int temp;
for ( i = 1; i < n; i++)
{
if(data[i]<data[i-1])
{
/*若后一个元素小于前一个元素,位置互换*/
temp=data[i];
data[i]=data[i-1];
/*
位置互换后,若前面还有元素,则还要与前面元素比较,
若前面元素还有比当前元素小的元素,还需要位置互换
*/
for ( j = i-2; j >=0 && data[j]>temp; j--)
{
data[j+1]=data[j];
}
data[j+1]=temp;
}
}
}
int main(){
int data[6]={4,6,5,1,3,2};
insertSort(data,6);
printf("the result of the insertsort:\n");
for (int i = 0; i < 6; i++)
{
printf("%d ",data[i]);
}
printf("\n");
system("pause");
return 0;
}
输出结果