• 插入排序

    插入排序

    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. }