/***********插入算法实现******************/
#include <stdio.h>
void println(int array[], int len) //定义一个输出数组元素的函数
{
int i = 0;
for(i=0; i<len; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
void swap(int array[], int i, int j) //用于交换两个元素变量
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
void InertionSort(int array[], int len) // 具体插入算法实现
{
int i = 0;
int j = 0;
int k = -1;
int temp = -1;
for(i=1; i<len; i++)
{
k = i;
temp = array[k]; //把第二个元素单个拿出来,并把第一个与第二个元素比较如果大于他,就交换位置把小的插入前一个位置
for(j=i-1; (j>=0) && (array[j]>temp); j--)
{
array[j+1] = array[j]; //
k = j;
}
array[k] = temp; //这一步就是把拿出来的数进行插入恰当的位置
}
}
int main()
{
int array[] = {21, 25, 49, 25, 16, 8};
int len = sizeof(array) / sizeof(*array);
println(array, len);
InertionSort(array, len);
println(array, len);
return 0;
}
·