标签:turn 结果 quick esc alt idt array png 匹配
算法分析作业:
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 */
执行结果:
标签:turn 结果 quick esc alt idt array png 匹配
原文地址:https://www.cnblogs.com/bpf-1024/p/12610783.html