• 字符串冒泡排序和折半查找


    输入 10个员工工号和姓名,以工号增加方式排序(姓名跟随改变),按工号查找(同时找出姓名)

    代码如下:

     1 # include<stdio.h>
     2 # include<string.h>
     3 char num[10][7];
     4 char name[10][10];
     5 char temp[10];
     6 char num1[7];
     7 int main()
     8 {
     9     void sort(char[][7],char[][10]);
    10     void search(char[][7],char[][10],char[]);
    11     for(int i=0;i<10;i++)
    12     {
    13         gets(num[i]);
    14         gets(name[i]);
    15     }
    16     sort(num,name);
    17     for(i=0;i<10;i++)
    18     {
    19         printf("%s:%s
    ",num[i],name[i]);
    20     }
    21     printf("输入要查找的工号:");
    22     gets(num1);
    23     search(num,name,num1);
    24     return 0;
    25 }
    26 
    27 void sort(char a[][7],char b[][10])
    28 {
    29     for(int i=0;i<9;i++)
    30     {
    31         int sign=0;
    32         for(int j=9;j>i;j--)
    33         {
    34             if(strcmp(a[j],a[j-1])<0)
    35             {
    36                 sign=1;
    37                 strcpy(temp,a[j]);
    38                 strcpy(a[j],a[j-1]);
    39                 strcpy(a[j-1],temp);
    40                 strcpy(temp,b[j]);
    41                 strcpy(b[j],b[j-1]);
    42                 strcpy(b[j-1],temp);
    43             }
    44         }
    45         if(sign==0) break;
    46     }
    47 }
    48 void search(char a[][7],char b[][10],char c[])
    49 {
    50     int f=0,r=9,mid;
    51     while(f<=r)
    52     {
    53         mid=(f+r)/2;
    54         if(strcmp(a[mid],c)==0)
    55         {
    56             printf("%s:%s
    ",a[mid],b[mid]);
    57             return;
    58         }
    59         else if(strcmp(a[mid],c)<0) r=mid-1;
    60         else f=mid+1;
    61     }
    62     printf("未找到
    ");
    63 }

    运行结果:

  • 相关阅读:
    Struts2框架
    读者写者问题
    哲学家就餐问题
    理解中断
    理解处理机调度
    理解死锁
    理解进程
    Linux CentOS 6.7 挂载U盘
    家庭-养老院模型理解IOC和DI
    Bash基础
  • 原文地址:https://www.cnblogs.com/bboykaku/p/12450788.html
Copyright © 2020-2023  润新知