递归版
void insertion_sort(int arr[], int n)
{
if(n < 2) return;
insertion_sort(arr, n - 1);
for(int i = 0; i != n - 1; i++)
{
if(arr[i] > arr[n - 1])
{
for(int j = i; j != n - 1; j++)
{
int t = arr[n - 1];
arr[n - 1] = arr[j];
arr[j] = t;
}
break;
}
}
}非递归版
void InsertionSort(int arr[], int n)
{
int i, j, t;
for(i = 1; i < n; i++)
{
t = arr[i];
for(j = i; j > 0 && arr[j - 1] > t; j--)
arr[j] = arr[j - 1];
arr[j] = t;
}
}
本文详细介绍了插入排序算法的两种实现方式:递归版与非递归版。递归版通过不断缩小问题规模来完成排序,而非递归版则通过逐步将每个元素插入到已排序序列的适当位置来实现。两种方法均适用于对整型数组进行升序排列。
1089

被折叠的 条评论
为什么被折叠?



