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

Posted bboykaku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串冒泡排序和折半查找相关的知识,希望对你有一定的参考价值。

输入 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 }

运行结果:

技术图片

 

以上是关于字符串冒泡排序和折半查找的主要内容,如果未能解决你的问题,请参考以下文章

Java习题(选择,冒泡排序,折半查找)

数据结构-折半查找和冒泡排序(Java语言)

数组常用算法之冒泡排序二分查找(折半查找)

01. Java的经典排序--选择排序--冒泡排序--折半查找(二分查找)

单链表的折半查找,冒泡排序,选择排序

Java求最大值平均值折半查找和冒泡排序