我是靠谱客的博主 舒心期待,最近开发中收集的这篇文章主要介绍C语言8种基本排序算法之插入排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

小白一天学一个算法系列,从逻辑、关键、算法动画、完整示例代码四个方面进行学习。

(注:冒泡排序示例代码有更详细的注解,共用代码后续算法示例代码中不再注释。)

逻辑:待插入数和有序数列的数依次比较,符合条件时有序数后移,插入值填写到空出的位置。外层控制插入值进入,内层控制有序数后移。

关键:内外层结合的关键点是j=i-1,j--,从待插入值的相邻位开始向前依次比较大小。

动画:

代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 10

//插入排序
void sort_insert(int *arr)
{
	int i,j,InsertVal;
	//开始时,最前面的两个数比较
	for (i = 1; i < N; i++)	//外层控制要插入的值进入
	{
		InsertVal=arr[i];	//保存待插入值,循环比较
		for(j=i-1;j>=0&&arr[j]>InsertVal;j--)	//内层控制已插入的值后移
		{
			arr[j+1]=arr[j];	//先判断后执行,注意j=j-1是在执行之后的
		}
		arr[j+1]=InsertVal;		//循环结束后即确定了要插入的位置,填入插入值
	}
}

//打印数组
void sort_inser_print(int *arr)
{
	int i;
	for (i = 0; i < N; i++)
	{
		//putchar(arr[i]);
		printf("%3d",arr[i]);
	}
	printf("n");
}

int main()
{
	
	//int res_rand;
	int i;
	int a[N];
	srand((unsigned int)time(NULL));	//srand播种
	//res_rand=rand()%100;	//rand生成

	printf("随机数生成:");
	for (i = 0; i < N; i++)
	{
		a[i]=rand()%100;
	}
	sort_inser_print(a);

	//调用插入排序
	sort_insert(a);
	printf("插入排序结果:");
	sort_inser_print(a);
	system("pause");
	return 0;
}

最后

以上就是舒心期待为你收集整理的C语言8种基本排序算法之插入排序的全部内容,希望文章能够帮你解决C语言8种基本排序算法之插入排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部