zoukankan      html  css  js  c++  java
  • 常见的算法快速分析解决(一)

    冒泡法                                                                                           
    题目:用冒泡法从键盘输入10个数字,编写代码对他排序
    分析:
          冒泡法排序将待排序的元素看做是垂直的气泡,值较小的元素比较轻,往上浮动,在这里算法中需要对这组“气泡”出来若干次;每处理一次,就对两个相邻的“气泡”的值进行交换,当位置较高的“气泡”大于另一个“气泡”的值,则可以通过临时变量将两个“气泡”的值交换,所以此时,第一次处理后,最轻的“气泡”值就浮到最高的位置,第二次处理后,第二轻的数据浮到第二高的位置。一般处理N次以后,这时就没有必要比较第N高位置以上的“气泡”,因为此时差不多的“气泡”都正确排好了序.
    代码如下
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace bubble_sort
    {
    class Program
    {
    staticvoid Main(string[] args)
    {
    int a, b,temp;
    int[] Bubble_sort_arr =newint[10];//定义类型为int的数组Bubble_sort_arr
    Console.WriteLine("请输入10个整数");
    for (a=0; a <10;a++ )//将输入的10个数字存储于数组的子项当中
    {
    Bubble_sort_arr[a]
    = Convert.ToInt32(Console.ReadLine());
    }
    for (b = Bubble_sort_arr.Length -1; b >0;b-- )//经过2层的循环,将数组中的子项数值进行交换
    {
    for(a=0;a<b;a++)
    {
    //当前一项大于后一项的时候,将交换两项的位置
    if (Bubble_sort_arr[a] > Bubble_sort_arr[a +1])
    {
    temp
    = Bubble_sort_arr[a];
    Bubble_sort_arr[a]
    = Bubble_sort_arr[a +1];
    Bubble_sort_arr[a
    +1] = temp;
    }
    }

    }
    Console.WriteLine(
    "排好序的10个整数是");
    for (a =0; a < Bubble_sort_arr.Length;a++ )
    {
    Console.WriteLine(Bubble_sort_arr[a].ToString());
    }
    Console.ReadLine();

    }
    }
    }
    结果:
     
     递归法                                                                                            
    题目:递归法对一组的排序规则为:1、1、2、3、5、8、13、21、34........请求第50位的数值
    分析:
          从给出的数字序列当中发现规律,第1个数字和第2个数字相加之和为第3个数;第2个数和第3个数的和为第4个数,依次类推,可知道第N-1个数字和第N个数字相加的和为第N+1数字,此时可以得到如下规律:
          当N=0;或者N=1时,F(N)=1;      当N>1时,F(N)=F(N-1)+F(N-2);此时不难得到第50个数字是多少了...如图:
    代码如下
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Recursion
    {
    class Program
    {
    staticvoid Main(string[] args)
    {

    Console.WriteLine(
    "输出第50为的是{0}",GetNumber(49));
    Console.ReadKey();
    }
    staticint GetNumber(int N)
    {
    if (N <=1)
    {
    return1;
    }

    return GetNumber(N -1) + GetNumber(N -2);

    }
    }
    }
     
     高斯求和                                                                                         
    高斯求和:整数1--100求和的问题根据数学家高斯给出著名的解决方法,请用算法实现..
    分析:

    在这里就不说高斯是怎么实现求和的故事了,你想知道的可以看http://zhidao.baidu.com/question/10587649.html,直接给一张图:

    代码如下:
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Gaussian_summation
    {
    class Program
    {
    staticvoid Main(string[] args)
    {
    //定义两个int类型变量 a,sum,a用于计数和索引,sum用于存储相加结果
    int a, sum =0;
    int[] Arr =newint[100];//定义int类型数组,Arr包括100个子项
    for(a=0;a<Arr.Length;a++)//开始循环,从0-99,将a赋予当前数组子项
    {
    Arr[a]
    =a+1;
    }
    for (a =0; a < Arr.Length/2;a++ )//循环,次数为数组一半
    {
    sum
    += Arr[a] + Arr[Arr.Length - a -1];//将数组a索引的子项和数组尾端计数第a的位置的子项相加,将结果赋值给sum
    }
    Console.WriteLine(sum.ToString());
    Console.ReadLine();

    }
    }
    }
     
    结果:
     
     
    结尾:                                                                                         
    接下继续:常见的算法快速分析解决(二)
    推荐:程序之法 算法之道:http://blog.csdn.net/v_JULY_v

    作者:类菌体
    出处:http://www.cnblogs.com/bacteroid/archive/2011/05/25/2057401.html
    关于作者:在校学生
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
    如有问题,可以通过303323670@qq.com 联系我,非常感谢。

  • 相关阅读:
    如何使用Total Recorder录制软件发出的声音
    火狐浏览器Firefox如何使用插件,火狐有哪些好用的插件
    [Tools] Create a Simple CLI Tool in Node.js with CAC
    [Unit Testing] Mock a Node module's dependencies using Proxyquire
    [SCSS] Create a gradient with a Sass loop
    [Algorithm] Heap data structure and heap sort algorithm
    [Debug] Diagnose a Slow Page Using Developer Tools
    [Tools] Deploy a Monorepo to Now V2
    [PWA] Add Push Notifications to a PWA with React in Chrome and on Android
    [Algorithms] Using Dynamic Programming to Solve longest common subsequence problem
  • 原文地址:https://www.cnblogs.com/bacteroid/p/2057401.html
Copyright © 2011-2022 走看看