常见算法

 
常用的数据结构包括:

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;
}

参考