当前位置:编程学习 > C/C++ >>

c++常见的算法快速分析解决(一)

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

代码如下:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace bubble_sort

{   

class Program   

{       

static void Main(string[] args)       

{           

int a, b,temp;           

int[] Bubble_sort_arr = new int[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   

{       

static void Main(string[] args)       

{                      

  Console.WriteLine("输出第50为的是{0}",GetNumber(49));           

Console.ReadKey();       

}       

 static int GetNumber(int N)       

 {           

if (N <= 1)           

{               

 return 1;           

}                                  

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

}   

}

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


代码如下:
 
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Gaussian_summation

{   

class Program   

{       

static void Main(string[] args)       

 {           

 //定义两个int类型变量 a,sum,a用于计数和索引,sum用于存储相加结果           

 int a, sum = 0;           

int[] Arr = new int[100];

//定义int类型数组,Arr包括100个子项           

 for(a=0;a<Arr.Length;a++)//开始循环,从0-99,将a赋予当前数组子项           

{               

Arr[a]=a+1; &nbs

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,