首页 > 学院 > 开发设计 > 正文

数据结构与算法分析C语言描述-1.1

2019-11-08 02:22:28
字体:
来源:转载
供稿:网友
#include <stdio.h> #include <time.h>/*将前k个元素读入数组并(以递减的顺序)对其排序。   接着,将剩下的元素再逐个读入  如果它小于数组中的第k个元素则忽略    否则 就将其放到数组中正确的位置上,同时将数组中的一个元素挤出数组 */  #define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))int  key(int *a,int len,int k);int location(int *a,int len,int ins);void insert(int *a,int len,int insKey); int main(void){    int count;    PRintf("请输入元素的个数N:");     scanf("%d",&count);    int k=count/2;     int time1=clock();    int i;    //输入的所有元素 保存在数组a      int a[count];        //排序后的前k个元素 保存在数组b      int b[k];     int input;        for(i=0;i<count;i++){        scanf("%d",&input);        a[i]=input;    }        //将前k个元素赋值geib     for(i=0;i<k;i++){        b[i]=a[i];    }        for(i=0;i<k;i++){        printf("%d ",b[i]);    }     printf("/n");    //对b进行排序     BubbleSort(b,k);    for(i=0;i<k;i++){        printf("%d ",b[i]);    }     printf("/n");        //插入操作     for(i=k;i<count;i++){        if(a[i]>b[k-1])            insert(b,k,a[i]);    }    int time2=clock();    printf("%d time:/%lf",b[k-1],(time2-time1));         return 0;}  //降序后返回最小的值 int  key(int *a,int len,int k){    int i,j,tmp;    for(i=0;i<len-1;i++){        for(j=0;j<len-1-i;j++){            if(*(a+j)<*(a+j+1)){                SWAP(*(a+j),*(a+j+1),tmp);            }        }    }        return *(a+k-1);} //插入操作(要插入的数组,数组长度,插入的值) void insert(int *a,int len,int insKey){    int locat;    locat=location(a,len,insKey);    int tmp[len];    for(int i=0;i<len;i++){        tmp[i]=*(a+i);    }    for(int i=locat;i<len-1;i++){        *(a+i+1)=tmp[i];    }    *(a+locat)=insKey;  }//得到插入位置(插入数组,数组长度,插入的值)int location(int *a,int len,int ins){    int i=0;    while(ins<*(a+i)&&i<len){        i++;    }    if(i<len){        return i;        }else{        printf("未找到插入位置");        return -1;    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表