递归实现:
代码:
#include<iostream>
using namespace std;
void DirectInsertSort(int *arr, int length)
{
if (length == 1)
return;
DirectInsertSort(arr, length-1);
int temp = arr[length-1];
int j=length-2;
for (; j>=0&&temp<arr[j]; j--)
arr[j+1] = arr[j];
arr[j+1] = temp;
}
int main()
{
int arr1[10] = {5,6,1,8,3,6,7,5};
DirectInsertSort(arr1,8);
for (int i=0; i<8; i++)
cout << arr1[i] << " ";
cin.get();
cin.get();
return 0;
}
运行结果:
非递归实现:
代码:
#include<iostream>
using namespace std;
void DirectInsertSort(int *arr, int length)
{
int i,j,key;
for (i=1; i<length; i++)
{
key = arr[i];
for (j=i-1; j>=0&&key<arr[j]; j--)
arr[j+1] = arr[j];
arr[j+1] = key;
}
}
int main()
{
int arr1[10] = {5,6,1,8,3,6,7,5};
DirectInsertSort(arr1,8);
for (int i=0; i<8; i++)
cout << arr1[i] << " ";
cin.get();
cin.get();
return 0;
}