数据结构实验课内容,加上二分法查找:

1.读入或用随机函数生成10个整数作为数组元素; 

2.调用排序函数进行排序,输出升序的排序结果; 

3.修改排序函数,变成降序排序,调用之后输出排序结果; 

4.读入一个数组元素,调用折半查找函数,输出该元素在数组中的位置; 

5.读入一个非数组元素,调用折半函数,输出“找不到”  

6.改进折半查找函数,使之能统计元素之间的比较次数并输出。

#include "stdio.h"
#include "time.h"
void shell_insert(char *L,int dk,int type) {
int i,j;
    for(i=dk+1;i<=10;i++) {
        if( (type ? L[i]L[i-dk]) ) {
            L[0]=L[i];
            for(j=i-dk;j>0&&(type?L[0]L[j]);j-=dk)
                L[j+dk]=L[j];
            L[j+dk]=L[0];
        }
    }
}
void shell_sort(char *L,int type) {
int i,j,dlta[3]={3,2,1};
    for(i=0;i<3;i++) {
        shell_insert(L,dlta[i],type);
/*    printf("the %d time sorted_group is ",i);
    for(j=0;j<11;j++)
        printf("%c ",L[j]);
    printf("\n");
*/    }
}
int bin_search(char *L,char key,int *count) {
int low,high,mid;
low=1;high=10;
*count=1;
while(low <= high) {
        mid=(low+high)/2;
        if(L[mid]==key) return mid;
        else if(L[mid]>key) low = mid+1;
        else high = mid -1;
        (*count)++;
        }
return 0;
}
int main(void)
{
int i,find_count;
char key,group[11];
    srand((unsigned)time(NULL));
    printf("the group is ");
    for(i=1;i<11;i++)
        printf("%c ",group[i]=rand()%26+'A');
    printf("\n");
    shell_sort(group,1);
    printf("the up sorted_group is ");
    for(i=1;i<11;i++)
        printf("%c ",group[i]);
    printf("\n");
    shell_sort(group,0);
    printf("the down sorted_group is ");
    for(i=1;i<11;i++)
        printf("%c ",group[i]);
    printf("\n");
    printf("enter the key you want\n");
    scanf("%c",&key);
  while(1){
    if(i=bin_search(group,key,&find_count))
        printf("position is %d,find_count is %d\n",i,find_count);
    else
        printf("not found\n");
    printf("continue? n for exit\n");
    scanf(" %c",&key);
    if(key=='n')break;
  }
}

Tag: 代码

英语.无奈

2006-12-24

        又是一年两度的英语四六级考试,图书馆、自修室都塞满紧张复习的人,个个都像我半年前的样子 ^_^

        为迎接这次考试,特地复习一个早上,结果就在意料之中,一塌糊涂,哈哈。完全没上上次的感觉,当然,上次付出的时间不是一个早上可以比的。英语,真不知如何是好 ^_^

        幸好在早上复习时,找到MIT的教学视频。一个计算机系统工程(Computer System Engineering),内容挺多的,硬件、软件、网络都有涉及;另一个是算法导论(Algorithm),初始部分讲的数据结构感觉挺难的。放假无聊时拿来练练英语应该不错 ^_^


痛苦两周

2006-12-20

        几经艰辛焊好的光电探头,竟然,坏了4.5个,剩下一个正常和一个只有一半电压的...

        先前买了三个,初始测试正常,焊好后没结果,重焊好几次,可惜,还是郁闷一星期。再买,这次买多一块面包板,大好电路测试完全正常。没想到这些探头这么孱弱(rpr220),焊好后就......

Tag: 小车

接触不良

2006-12-12

        实验箱啊实验箱,搞了差不多两个星期,实在没办法,换了两个新的。可惜2440实验箱实在不行,无聊间换了一下2410和2440的核心板,故事从此开始。一个焊了3个光电对管后调试失败的晚上,在新装修的实验室里(环境十分不错^_^),两个实验箱都没反映,检测不到mcu。12点,一直到十二点,10点,延续到第二天早上的10点,才发现是那个核心板的插槽基础不良!无比差劲的做工,误差竟可达一个接触点。估计之前那个实验箱也是这个原因......

        可恶的51.com竟然不让引用图片...

Tag: 琐事

月末,繁忙

2006-12-01

        近来可真忙,最怕的是忙完后不知做了什么事情......

选修结束,随便交两篇论文就结束了必须的大学选修课...有一门项目管理,大一就借书看,后来不知那里看到管理需要实践,不知不觉忘了...技术+管理=大一的职业向往,现在,已经找不到这种感觉。

        搞了差不多一个星期的ARM,或者说被ARM抓狂一星期。借来的两个实验箱,都烧写不了,ADS仿真,检测到unknow设备,920T不会不认识吧;windows、linux下JTAG烧写,都没用,flash较检失败;有一个箱的amd nor flash带有烧写功能的ucos,flash的ID是可以正确识别了,而且还能烧写第一个块,很可惜,第二个块就较检失败。在128内存的破电脑上,在前几天没有网络的情况下,就这样,一个星期飘过。

        月末,月初,小车还没完成,硬件还是头等难题...功课算是补了点...

Tag: 琐事

分页共1页 1