zoukankan      html  css  js  c++  java
  • 学而时习之,不亦乐乎。

    归并排序经典代码

    View Code
        #include<stdio.h>
        #define N 10000
        void Merge(int a[],int low,int mid,int high)
        {
        int m = mid+1 , n = high-mid;
        int i,x[N],y[N];
        //定义两个数组,用于分割原数组,将原数组中的元素平均非配给两个数组
        for(i = 0;i < m; i++)
        {
        x[i] = a[low+i];
        }
        for(i = 0;i < n;i++)
        {
        y[i] = a[mid+i+1];
        }
        int j = 0,k = low;
        i = 0;
        //将两个数组进行比较合并
        while(i < m && j < n)
        {
        if(x[i] < y[j])
        {
        a[k] = x[i++];
        }
        else 
        {
        a[k] = y[j++];
        }
        k++;
        }
        //将剩余的元素归并到原数组
        while(i < m)
        a[k++] = x[i++];
        while(j < n)
        a[k++] = y[j++];
        }
        void Merge_Sort(int a[],int low,int high)
        {
        //先将传递过来的数组进行递归二分
        if(low < high)
        {
        int mid = (low+high)/2;
        Merge_Sort(a,low,mid);
        Merge_Sort(a,mid+1,high);
        Merge(a,low,mid,high);
        }
        }
        void main()
        {
        int a[N],n,i;
        scanf("%d",&n);
        for( i = 0; i < n; i++)
        scanf("%d",&a[i]);
        // 直接进行调用
        Merge_Sort(a,0,n-1);
        for( i = 0; i < n; i++)
        printf("%d ",a[i]);
        }

    快速排序

    View Code
    KMP算法
    View Code
    #include<stdio.h>
    #include<string.h>
    const int N = 1010;
        char T[1000010], P[N];
        int pi[N];
        int ans;
        void COMPUTER_PREFIX_FUNCTION(){
            int m = strlen(P), i, k;
            for(k = pi[0] = -1, i = 1; i < m; i++){
                while(k > -1 && P[k+1] != P[i])
                    k = pi[k];
                if(P[k+1] == P[i])
                    k++;
                pi[i] = k;
            }
        }
        void KMP_MATCHER(){
            int i, n, m, k;
            n = strlen(T); m = strlen(P);
            for(k = -1, i = 0; i < n; i++){
                while(k > -1 && P[k+1] != T[i])    k = pi[k];
                if(P[k+1] == T[i])    k++;
                if(k == m-1){
                    ans ++;
                    k = pi[k];
                }
            }
        }
        int main(){
            //freopen("data.in", "r", stdin);
            int n;
            scanf("%d", &n);
            while(n--) {
                scanf("%s %s", T, P);
                ans = 0;
                COMPUTER_PREFIX_FUNCTION();
                KMP_MATCHER();
                printf("%d\n", ans);
            }
            return 0;
        }
        #include<stdio.h>
        void sort(int a[],int low,int high)
        {
        int m = low,n = high,key = a[low];
        if(low > high)
        return;
        while(low < high)
        {
        while(low < high && key <= a[high])
        high--;
        a[low] = a[high];
        while(low < high && key >= a[low])
        low++;
        a[high] = a[low];
        }
        a[low] = key;
        sort(a,m,low-1);
        sort(a,low+1,m);
        }
        void main()
        {
        int n,i,a[100];
        scanf("%d",&n);
        for(i = 0; i < n; i++)
        scanf("%d",&a[i]);
        sort(a,0,n-1);
        for(i = 0; i < n; i++)
        printf("%d ",a[i]);
        }
  • 相关阅读:
    精通正则表达式(JavaScript)
    Go知识点记录
    多线程揭秘
    Python test
    ELinq+T4模版引擎制作多文件实体代码生成器
    浏览器内核
    MongoDb的增删改查
    LINQ执行表达式
    ASP.NET MVC3 读书笔记四(数据注解和验证)
    C#默认以管理员身份运行程序
  • 原文地址:https://www.cnblogs.com/SDUTYST/p/2603797.html
Copyright © 2011-2022 走看看