插入排序

小懿同学發表於2024-05-07
//插入排序 是把無序序列中元素依次插入到有序序列中,一般是從有序序列的尾部開始比較
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;
	}
}

相關文章