• step3 . day8数据结构之算法


    关于算法,理解的不算很深刻,了解到好的算法不仅在时间的节约和空间的利用上,都最求最优的代码。

    比较经典的算法就是各种排序、查找了,下面贴两个理解比较深的优化算法(二分查找在顺序二叉树那里写过了,不再重复,哈希查找的重点在于映射方法和冲突的解决)

    1.上台阶问题,100个台阶,可以走1个2个和5个,有多少总方案,我自己优化的话,只能从暴力穷举→有限穷举→去除无效穷举这几个方向优化,不过最终的代码给了我很多的启发,找规律后再写代码会好的多,代码如下
    #include<stdio.h>

    int fun1(){
    int count = 0;
    int i,j,k;
    for(i=0;i<=100;i++)
    for(j=0;j<=100;j++)
    for(k=0;k<=100;k++){
    if(i+2*j+5*k==100)
    count++;
    }
    printf("count in fun1 = %d ",count);
    printf("fun1循环 %d 次 ",i*j*k);
    }

    int fun2(){
    int count = 0;
    int i,j,k;
    for(i=0;i<=20;i++)
    for(j=0;j<=50;j++)
    for(k=0;k<=100;k++){
    if(5*i+2*j+k==100)
    count++;
    }
    printf("count in fun2 = %d ",count);
    printf("fun2循环 %d 次 ",i*j*k);
    }


    int fun3(){
    int count = 0;
    int i,j;
    for(i=0;i<=20;i++)
    for(j=0;j<=50;j++)
    { if(5*i+2*j<=100)
    count++;
    }
    printf("count in fun3 = %d ",count);
    printf("fun3循环 %d 次 ",i*j);
    }

    int fun4(){
    int count = 0;
    int i;
    for(i=0;i<=100;i+=5)
    count+=(100-i+2)/2;
    printf("count in fun4 = %d ",count);
    printf("fun4循环 %d 次 ",i/5);
    }

    1.快速排序法:思想是将第一个数作为标的,从前和从后分别找大于和小于的书,区分放入位置,已到达将标的放到中间,两边的总体大小已经排序OK,进而递归调用继续排序。


    #include<stdio.h>
    int bubblesort(int a[],int size){
    int i,j,k=0;
    for(i=0;i<size-1;i++){
    for(j=0;j<size-i-1;j++){
    if(a[j]>a[j+1]){
    a[j] += a[j+1];
    a[j+1] = a[j]-a[j+1];
    a[j] = a[j]-a[j+1];
    k++;
    }

    }

    }

    return k;
    }

    void show(int a[],int size){
    int i;
    for(i=0;i<size;i++){
    printf("%d ",a[i]);
    }
    printf(" ");
    }

    static count =0;
    int quicksort(int a[],int lift,int right){

    if(lift>=right)
    return -1;
    int i = lift;
    int j = right;
    int temp = a[i];
    while(i<j){
    while(i<j && temp <= a[j]){
    j--;
    count++;
    }
    a[i]=a[j];
    printf("________________ ");
    show(a,8);
    while(i<j && a[i] <= temp)
    { i++;
    count++;
    }
    a[j]=a[i];
    printf("________________ ");
    show(a,8);
    }
    a[i]=temp;
    printf("____________________________ ");
    show(a,8);
    quicksort(a,lift,i-1);
    quicksort(a,i+1,right);
    return count;

    }

  • 相关阅读:
    基于角色的权限控制
    C#中实现拖动无边框窗体Form
    C#加密方法汇总
    监控 SQL Server (2005/2008) 的运行状况来自微软TetchNet
    经典SQL语句集锦【转】
    Asp.net+Xml+js实现无线级下拉菜单
    CuteEditor5.0的安装及它与Ajax.net配合无刷新操作数据库!
    sql 提取数字、字母、汉字
    c# 判断远程文件是否存在
    c#采集网页用得几个函数
  • 原文地址:https://www.cnblogs.com/huiji12321/p/11279458.html
Copyright © 2020-2023  润新知