排序算法
直接插入排序(完整实现)
//--------------------------------------1 头文件-------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#define length(array) sizeof(array)/sizeof(array[0])
#define Element int
#define format "%d"
// 直接插入排序
void InsertSort(Element array[], int len)
{
Element e;
int index;
for (int i = 1; i < len; i++)
{
e = array[i];
for (index = i - 1; index >= 0 && array[index]>e; index--)
{
array[index + 1] = array[index];
}
array[index + 1] = e; // array[index+1] 是因为在for循环中有 index--, 所以此时需要再加上1
}
}
// 遍历数组,打印输出
void Visit(Element array[], int len)
{
for (int i = 0; i < len; i++)
printf(format, array[i]);
}
//--------------------------------------2 源文件-------------------------------------------------
#include "InsertSort.h"
int main()
{
Element array[8] = { 6, 5, 3, 1, 8, 7, 2, 4 };
int len = length(array);
printf("\n排序前:");
Visit(array, len);
printf("\n直接插入排序:");
InsertSort(array, len);
Visit(array, len);
printf("\n");
system("pause");
return 0;
}