插入排序

插入排序

算法思想

  • 插入排序的思路就是从右侧的未排序区域内取出一个数据,然后将它插入到已排序区域内合适的位置上。

  • 我们使用一个数组来实现整个排序,假设首元素有序,从无序数据中拿出一个跟已经有序的数组进行从后向前比较,如果大于最后一个元素则插入到最后一个元素的后面,小于则继续向前比较,然后把比较的元素后移一个位置,直到找到合适的位置

image

代码展示


//插入排序 是把无序序列中元素依次插入到有序序列中,一般是从有序序列的尾部开始比较
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;
	}
}
posted @ 2025-05-14 20:44  Arroyol  阅读(14)  评论(0)    收藏  举报