栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

插入排序(C)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

插入排序(C)

算法思想:将第i个元素插入到前面i-1个已经排好序的记录中。

例如:

初始序列为:3   2   1   5   4   10  7   8   6   9共10个元素的序列,插入排序一般是从第二个元素开始的,所以总共会进行n-1轮

第一轮:将第2个元素2插入到{3}序列中并排序

           2   3   1   5   4   10  7   8   6   9 

第二轮:将第3个元素1插入到{2,3}序列中并排序

           1   2   3   5   4   10  7   8   6   9 

第三轮:将第4个元素5插入到{1,2,3}序列中并排序

           1   2   3   5   4   10  7   8   6   9 

第四轮:将第5个元素4插入到{1,2,3,5}序列中并排序

           1   2   3   4   5   10  7   8   6   9

第五轮:将第6个元素10插入到{1,2,3,4,5}序列中并排序

           1   2   3   4   5   10  7   8   6   9

第六轮:将第7个元素7插入到{1,2,3,4,5,10}序列中并排序

           1   2   3   4   5   7   10  8   6   9

第七轮:将第8个元素8插入到{1,2,3,4,5,7,10}序列中并排序

           1   2   3   4   5   7   8   10  6   9

第八轮:将第9个元素6插入到{1,2,3,4,5,7,8,10}序列中并排序

           1   2   3   4   5   6   7   8   10  9

第九轮:将第10个元素9插入到{1,2,3,4,5,6,,7,8,10}序列中并排序得到最终序列

           1   2   3   4   5   6   7   8   9   10

核心代码:

void insertSort(int a[],int n)
{
 int i,j,temp;
 for(i=1;i=0&&a[j]>temp)//从0-j寻找可以插入的位置
     {
   	a[j+1]=a[j];//将a[j]的值赋给a[j+1] 
   	j=j-1;
     }
    a[j+1]=temp;// 将待插入的元素成功插入到序列中 
   
  }
		
}

算法分析:从空间上来看只需要一个辅助空间,空间复杂度为O(1),

对于插入排序而言,最好的情况是元素已经按照有序排列,只进行n-1次比较,移动元素的次数也达到最小值为2(n-1),即每一次只对带插入元素a[i]移动两次。

最坏情况是元素逆序排列,第i趟比较i次,此时比较次数为(n)(n-1)/2,第i趟移动i+2次,移动次数为(n+4)(n-1)/2;

                            ,

                            

时间复杂度为O(n^2);

同时,插入排序属于稳定排序算法。

C语言可执行代码:

#include
void printArray(int a[],int n)
{
	for(int i=0;i=0&&a[j]>temp)
     {
   	a[j+1]=a[j];//将a[j+1]的值赋给a[j] 
   	j=j-1;
     }
    a[j+1]=temp;// 将带插入的元素插入到序列中 
    printf("第%d轮排序后的结果:",i);
    printArray(a,10);
  }
		
}
int main(){
	int a[10];
	printf("please enter 10 numbers:n");
	for(int i=0;i<10;i++)
	   scanf("%d",&a[i]);
	printf("the array before sort:n");
	printArray(a,10);
	insertSort(a,10);
	printf("the array after sort:n");
       printArray(a,10);
	return 0;	   
}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号