插入排序函数
程序
/*******************************************************************
*
* 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,