插入排序函数

插入排序函数

程序

/*******************************************************************
 *
 *	file name:	插入排序函数接口
 *	author	 :  17647576169@163.com
 *	date	 :	2024-5-6
 *	function :	把无序序列中元素依次插入到有序序列中,一般是从有序序列的尾部开始比较
 * 	note	 :  None
 *
 *	CopyRight (c)  2024   17647576169@163.com   All Right Reseverd
 *
 * *****************************************************************/
void InsertSort(int buf[10], int bufsize)
{
	int temp = 0;		  // 用于备份当前待插入元素的值
	int current_prev = 0; // 备份待插入元素的下标

	// 1.可以假设把数组中的第一个元素作为有序序列的元素,剩下的元素作为无序序列
	for (int i = 1; i < bufsize; ++i)
	{
		// 2.先备份当前待插入元素的值
		temp = buf[i];

		// 3.把当前待插入元素和有序序列中的元素依次进行比较,从有序序列尾部开始
		for (int j = i - 1; j >= 0; j--)
		{
			// 当前待插入元素的值 小于 待插入元素的直接前驱的元素的值
			if (temp < buf[j])
			{
				current_prev = j;	 // 备份当前待插入元素的直接前驱的下标
				buf[j + 1] = buf[j]; // 后移
			}
			else
			{
				current_prev = j + 1;
				break;
			}
		}

		// 4.把待插入元素插入到指定位置
		buf[current_prev] = temp;
	}
}

验证

int main(int argc, char const *argv[])
{

	// 定义一个整型数组存储10个整数
	int buf[9] = {14, 23, 12, 5, 8, 3, 9, 10, 33};
	int i = 0;
	InsertSort(buf, sizeof(buf) / sizeof(buf[0]));
	while (buf[i] != '\0')
	{
		printf("%d,", buf[i]);
		i++;
	}
	printf("\n");
	return 0;
}

输出结果

3,5,8,9,10,12,14,23,33,
posted @ 2024-05-06 20:46  谁TM买小米啊  阅读(5)  评论(0编辑  收藏  举报