【C】排序算法之——插入排序(直接插入排序)

插入排序分为直接插入排序和折半插入排序

插入排序:稳定,时间复杂度 O(n^2)

我们这次先来试试直接插入排序

#include<stdio.h>
void Print(int *a)//打印函数 
{
	for(int i=0;a[i]!='\0';i++)//打印每一次排序的结果 
		printf("%d ",a[i]);
	printf("\n");//输个换行符
}
void Insert(int *a)
{	
	int j;
	int k;
	int temp = 0; 
	for(int i=1;a[i]!='\0';i++)//假设第一个元素已经是有序队列 
	{
		for(j=0;j<i&&a[j]<a[i];)
			j++;
		printf("第%d次直接插入排序:",i);
		if(i!=j)
		{	
			temp = a[i];//运用中间变量temp进行交换
			for(k = i-1;k>=j;k--)
				a[k+1]=a[k];
			a[j] = temp; //把中间变量给a[i];
		}
		Print(a);	 	
	} 
}
int main()
{	
	int a[10]={1,3,5,7,9,2,4,6,8};
 	Print(a);
	Insert(a);//进行插入排序
	printf("直接插入排序结果如下:\n"); 
	Print(a);	
	return 0;
}


然后继续第6次排序到最后,同样的方法,就排完了微笑

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值