欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

tmp

程序员文章站 2022-07-09 18:45:22
算法分析作业: 1. 使用快速排序和冒泡排序进行数组排序 2. 使用蛮力法进行字符串匹配 1 /* 2 * @Author: bpf 3 * @Date: 2020-04-01 08:54:13 4 * @LastEditTime: 2020-04-01 10:12:08 5 * @LastEdit ......

算法分析作业:

1. 使用快速排序和冒泡排序进行数组排序

2. 使用蛮力法进行字符串匹配

 1 /*
 2  * @author: bpf
 3  * @date: 2020-04-01 08:54:13
 4  * @lastedittime: 2020-04-01 10:12:08
 5  * @lasteditors: bpf
 6  * @description: 使用快速和冒泡排序数组
 7  * @filepath: \learn in the internet\code\algorithms\sortarray.cpp
 8  */
 9 #include <stdio.h>
10 
11 void print(int a[], int n)
12 {
13     for(int i=0; i<n; i++)
14         printf("%d  ", a[i]);
15 }
16 
17 void switch(int *a, int *b)
18 {
19     int tmp = 0;
20     tmp = *a;
21     *a = *b;
22     *b = tmp;
23 }
24 
25 void quicksort(int a[], int n)
26 {
27     int min = 0, tmp = 0;
28     for(int i=0; i<n-1; i++)
29     {
30         min = i;
31         for(int j=i+1; j<n; j++)
32             if(a[min] > a[j])
33                 min = j;
34 
35         if(min != i)
36             switch(a+min, a+i);
37     }    
38 }
39 
40 void bubblesort(int a[], int n)
41 {
42     int tmp = 0;
43     for(int i=0; i<=n-2; i++)
44         for(int j=0; j<=n-2-i; j++)
45             if(a[j] > a[j+1])
46                 switch(a+j, a+j+1);
47 }
48 
49 int main()
50 {
51     int a [7] = {2, 6, 1, 4, 5, 3, 2};
52     int length = 7;
53     printf("原数组:");
54     print(a, length);
55     printf("\n快速排序法:");
56     quicksort(a, length);
57     print(a, length);
58     printf("\n冒泡排序法:");
59     bubblesort(a, length);
60     print(a, length);
61     return 0;
62 }
63 
64 /****** 快速排序
65 1. 获得源数组a
66 2. 输出源数组a
67 3. min = 0, 表示默认第一个元素为最小
68 4. i = 0, j = i+1
69 5. 第i轮排序, 从第j个元素开始, 与第min个元素比较
70     如果a[min] > a[j], 则 min = j
71     如果a[min] < a[j], 则跳过
72 6. j++ 直到 j == n
73 7. i++
74 8. 循环执行第5、6、7步,直到i == n-2
75 9. 输出排序后数组a
76 
77 ******* 冒泡排序
78 1. 获得源数组a
79 2. 输出源数组a
80 3. i = 0, j = 0
81 4. 第i轮排序, 从第j个元素开始, 与第j+1个元素比较
82     如果a[j] > a[j+1], 则交换两个数
83     如果a[j] < a[j+1], 则跳过
84 5. j++ 直到 j == n-2-i
85 6. i++
86 7. 循环执行第4、5、6步,直到i == n-2
87 8. 输出排序后数组a
88 */

 

 1 /*
 2  * @author: bpf
 3  * @date: 2020-04-01 09:21:35
 4  * @lastedittime: 2020-04-01 09:47:06
 5  * @lasteditors: bpf
 6  * @description: 使用蛮力法进行字符串匹配
 7  * @filepath: \learn in the internet\code\algorithms\catchstring.cpp
 8  */
 9 #include <stdio.h>
10 
11 int catstr(char s[], char cmp[])
12 {
13     int i = 0, j = 0;
14     for(i=0; s[i]!='\0'; i++)
15     {
16         for(j=0; cmp[j]!='\0'; j++)
17         {
18             if(s[i] !=cmp [j])
19                 break;
20             else
21                 i++;
22         }
23         if(cmp[j] == '\0')
24             return true;
25     }
26     return false;
27 }
28 
29 int main()
30 {
31     char s[100] = "i like apples and pears.";
32     char cmp[16] = {"\0"};
33     printf("源字符串:%s\n", s);
34     printf("请输入匹配的字符串:");
35     scanf("%s", cmp);
36     if(catstr(s, cmp))
37         printf("yes");
38     else
39         printf("no");
40 }
41 
42 /* 字符串匹配
43 1. 获得源字符串s
44 2. 输入匹配的字符串cmp
45 3. i = 0, j = 0
46 4. 判断字符串s与字符串cmp的第i个字符
47     如果不同则移到字符串s的下一个字符, 即i++
48     如果相同则再匹配cmp的第二个字符, 即j++
49 5. 重复第4步, 直到匹配完字符串s
50 6. 输出结果
51 */

 

 执行结果:

tmp