数据结构—绪论

1.数据结构的内容

数据结构包括数据的逻辑结构、数据的存储结构,和数据的操作这三个方面的内容。

2.typedef的使用

typedef struct Student
{
    long number;
    char name;
    char sex[3];
    int age;
}studentType;
  • `typedef表示将一个已有类型变成一个新类型 Stdent—>studenType;

3.抽象数据类型DataType

抽象数据类型不能在实际运算中运用,必须实例化。若要使用为int型,则有

typedef int DataType;

若要使用为结构体类型StudentType,则有

typedef StudentType DataType

4.计算算法耗时的实际测试(利用stdlib.h和time.h两个头文件)

题目:在数据元素个数为30000时,对比冒泡排序法和快速排序算法的实际耗时。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef int KeyType;

typedef struct
{
    KeyType key;
}DataType;

void BubbleSort(DataType a[],int n)//对数组元素用冒泡排序
{
    int i,j,flag=1;
    DataType temp;
    for(i=0;i<n&&flag==1;i++)
    {
        for(j=0;j<n-1;j++)
        {
            if(a[j].key>a[j+1].key)
            {
                flag=1;
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
}

void QuickSort(DataType a[],int low,int high) //用递归方法对数据元素进行快速排序
{
    int i=low,j=high;
    DataType temp=a[low];
    while(i<j)
    {
        while(i<j&&temp.key<=a[j].key)
        {
            j--;
        }
        if(i<j)
        {
            a[i]=a[j];
            i++;
        }

        while(i<j&&a[i].key<temp.key)
        {
            i++;
        }
        if(i<j)
        {
            a[j]=a[i];
            j--;
        }
    }
    a[i]=temp;
    if(low<i) QuickSort(a,low,i-1);
    if(i<high) QuickSort(a,j+1,high);
}

void main()
{
    int i,n=30000;
    double dif;
    time_t start,end;
    DataType test1[30000],test2[30000];
    for(i=0;i<n;i++)
    {
        test1[i].key=rand();
        test2[i].key=test1[i].key;
    }

    time(&start);
    BubbleSort(test1,n);
    time(&end);
    dif=difftime(end,start);
    printf("冒泡排序:%.2f秒\n",dif);
    time(&start);
    QuickSort(test2,0,n-1);
    time(&end);
    dif=difftime(end,start);
    printf("快速排序:%.2f秒\n",dif);
}

【运行结果】:

冒泡排序:4.00秒
快速排序:0.00秒

【程序说明】

  • rand()函数为随机生成函数,在头文件stdlib.h中
  • time()函数的功能为功能为取系统的当前时间,difftime(end,strat)函数用于求出end减去strat的时间差,单位为秒。这两个均在头文件time.h中
  • 对于同一个排序算法,若初始数据元素序列不同,则实际排序的耗时不同。所以要比较两个排序算法的实际耗时,测试数据应该相同。

你可能感兴趣的:(数据结构,typedef)