程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved