/*
时间:2012年5月18日 19:10:14
功能:直接插入排序 —— 简单排序
*/
# include <stdio.h>
/*
 排序处理部分。修改伪代码:
  1. 将data[0]改为中间变量temp;
  2.int i = 2 改为 int i=1,因为数组是从0开始。
*/
void InsertSort(int data[], int len)
{
 for (int i=1; i<len; i++)
 {
  if(data[i] < data[i-1])
  {
   int temp = data[i];
   data[i] = data[i-1];
   for (int j=i-2; data[j]>temp; j--) data[j+1] = data[j];
   data[j+1] = temp;
  }
 }
}
// 数组输出。
void OutPut(int data[], int len)
{
 for (int i=0; i<len; i++)
 {
  printf("%d ", data[i]);
 }
 printf("\n\n");
}
int main(void)
{
 int data[] = {33, 21, 5, 47, 1, 88, 77};
 printf("简单直接插入排序前的数组:\n");
 OutPut(data, 7);
 
 InsertSort(data, 7);
 printf("简单直接插入排序后的数组:\n");
 OutPut(data, 7);
 
 return 0;
}
/*
 结果:
 -----------------------------------
  简单直接插入排序前的数组:
  33 21 5 47 1 88 77
  简单直接插入排序后的数组:
  1 5 21 33 47 77 88
  Press any key to continue
 -----------------------------------
*/