1、 請程式設計實作一個冒泡排序算法?
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
2、選擇排序算法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 選擇排序
{
//選擇排序與冒泡排序比較的次數是一樣的
//選擇排序的交換次數要比冒泡排序的交換次數少
class Program
{
static void Main(string[] args)
{
int[] arr = { 15, 0, 10, 50, 55, 35, 15, 20 }; //待排序數組
SelectSort(arr); //調用選擇排序函數
}
private static void SelectSort(int[] arr)
{
int temp = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
int minVal = arr[i]; //假設 i 下标就是最小的數
int minIndex = i; //記錄我認為最小的數的下标
for (int j = i + 1; j < arr.Length; j++) //這裡隻是找出這一趟最小的數值并記錄下它的下标
{
//說明我們認為的最小值,不是最小
if (minVal > arr[j]) //這裡大于号是升序(大于是找出最小值) 小于是降序(小于是找出最大值)
{
minVal = arr[j]; //更新這趟最小(或最大)的值 (上面要拿這個數來跟後面的數繼續做比較)
minIndex = j; //記下它的下标
}
}
//最後把最小的數與第一的位置交換
temp = arr[i]; //把第一個原先認為是最小值的數,臨時儲存起來
arr[i] = arr[minIndex]; //把最終我們找到的最小值賦給這一趟的比較的第一個位置
arr[minIndex] = temp; //把原先儲存好臨時數值放回這個數組的空地方, 保證數組的完整性
}
//控制台輸出
foreach (int item in arr)
{
Console.WriteLine("C#周遊:{0}", item);
}
}
}
}
3、求以下表達式的值,寫出您想到的一種或幾種實作方法: 1-2+3-4+……+m
法一:
int sum=0;
bool flag=true;
for(int i=1;i<=m;i++)
{
if(flag)
sum+=i;
else
sum-=i;
flag=!flag;
}
return sum;
法二:
if((m%2)>0)
return m/2;
else
return -m/2;
int a=10;int b=15;
a=a+b;
b=a-b;
a=a-b;
public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}