插入排序

  1. #include <stdio.h>
  2. #define MaxSize 100
  3. typedef int KeyType; /*关键字类型*/
  4. typedef char ElemType[10]; /*其他数据项类型*/
  5. typedef struct
  6. {
  7. KeyType key; /*关键字域*/
  8. ElemType data; /*其他数据域*/
  9. } LineList; /*线性表元素类型*/
  10. void InsertSort(LineList R[],int n)
  11. {
  12. int i,j;
  13. LineList tmp;
  14. for (i=1;i<n;i++)
  15. {
  16. tmp=R[i];
  17. j=i-1;
  18. while (j>=0 && tmp.key<R[j].key)/*元素后移,以便腾出一个位置插入tmp*/
  19. {
  20. R[j+1]=R[j];
  21. j--;
  22. }
  23. R[j+1]=tmp; /*在j+1位置处插入tmp*/
  24. }
  25. }
  26. void main()
  27. {
  28. LineList R[MaxSize];
  29. KeyType a[]={75,87,68,92,88,61,77,96,80,72};
  30. int n=10,i;
  31. for (i=0;i<n;i++)
  32. R[i].key=a[i];
  33. printf("排序前:");
  34. for (i=0;i<n;i++)
  35. printf("%3d",R[i].key);
  36. printf("\n");
  37. InsertSort(R,n);
  38. printf("排序后:");
  39. for (i=0;i<n;i++)
  40. printf("%3d",R[i].key);
  41. printf("\n");
  42. }