常用的数据结构包括: 1. 数组(Array) 2. 链表(Linked List) 3. 栈(Stack) 4. 队列(Queue) 5. 树(Tree) 6. 图(Graph) 7. 哈希表(Hash Table) 8. 堆(Heap) 常用的算法包括: 1. 排序算法(如快速排序、归并排序、插入排序、冒泡排序等) 2. 搜索算法(如二分查找、深度优先搜索、广度优先搜索等) 3. 动态规划(Dynamic Programming) 4. 贪心算法(Greedy Algorithm) 5. 回溯算法(Backtracking) 6. 分治算法(Divide and Conquer) 7. 图算法(如最短路径算法、最小生成树算法等) 8. 字符串匹配算法(如KMP算法、Boyer-Moore算法等)
#include <stdio.h> #include <stdlib.h> int main() { int i,j,t,a[6]; printf("input 6 numbers:\n"); for(i=0;i<6;i++) scanf("%d",&a[i]); // 每一次冒泡将整个列表中最大/最小的数放到该列表最后一个位置 // 第一重循环次数:n-1 // 第二重循环,每次都从第1个数开始,与它后面的数比较 for(i=0;i<6-1;i++) for(j=0;j<6-1-i;j++) if(a[j]<a[j+1]) { t = a[j]; a[j]=a[j+1]; a[j+1] = t; } printf("-------------------\n"); for(i=0;i<6;i++) printf("%d\n",a[i]); return 0; }
不习惯索引从0开始计算,调整一下下标也可以
#include <stdio.h> #include <stdlib.h> int main() { int i,j,t,a[6]; printf("input 6 numbers:\n"); for(i=0;i<6;i++) scanf("%d",&a[i]); for(i=1;i<6;i++) for(j=1;j<6-i;j++) if(a[j-1]<a[j]) { t = a[j-1]; a[j-1]=a[j]; a[j] = t; } printf("-------------------\n"); for(i=0;i<6;i++) printf("%d\n",a[i]); return 0; }