数组、递归
- 递归
- 数组
- 数组定义方法
- `x 行 y 列` 的二维数组
- params 传参形式
- 二分查找
- 数组选择排序
- 数组冒泡排序
递归
- n的阶乘
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine(FunA(3));
}
public static int FunA(int n)
{
return n == 0 ? 1 : n * FunA(n - 1);
}
}
数组
数组定义方法
int[] arr0 = new int[10];
int[] arr1 = new int[3] { 1, 2, 3 };
int[] arr2 = new int[] { 1, 2, 3, 4, 5, 6 };
int[] arr3 = { 1, 2, 3, 4, 5, 6 };
x 行 y 列
的二维数组
int[,] arr = new int[3, 4];
arr[0, 1] = 12;
foreach (int item in arr)
{
Console.WriteLine(item);
}
params 传参形式
class MainClass
{
public static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4, 5, 6 };
ForArray(arr); // 1 2 3 4 5 6
ForArray(new int[5]); // 0 0 0 0 0
ForArray(new int[] { 1, 2, 3, 4, 5, 6 }); // 1 2 3 4 5 6
ForArray(1, 2, 3, 4, 5, 6); // 1 2 3 4 5 6
}
//public static void ForArray(int[] array)
//{
// foreach (int item in array)
// {
// Console.WriteLine(item);
// }
//}
public static void ForArray(params int[] array)
{
foreach (int item in array)
{
Console.WriteLine(item);
}
}
}
二分查找
- 利用二分查找查询升序数组中指定元素的下标
class MainClass
{
public static void Main(string[] args)
{
int[] array = { 1, 2, 4, 5, 6, 8 };
Console.WriteLine(FindIndex(array, 6));
}
/// <summary>
/// 利用二分查找查询升序数组中指定元素的下标
/// </summary>
/// <param name="array">目标数组</param>
/// <param name="num">要查找的数</param>
/// <returns>元素下标</returns>
public static int FindIndex(int[] array, int num) {
int index = -1;
int min = 0;
int max = array.Length - 1;
while (max >= min) {
int mid = (min + max) / 2;
if (array[mid] == num)
{
index = mid;
break;
}
else if (array[mid] > num)
{
max = mid - 1;
}
else {
min = mid + 1;
}
}
return index;
}
}
数组选择排序
public static int[] SortArray(int[] array)
{
for (int i = 0; i < array.Length - 1; i++) {
for(int j = i + 1; j < array.Length; j++) {
if (array[i] > array[j])
{
int num = array[i];
array[i] = array[j];
array[j] = num;
}
}
}
return array;
}
foreach (int item in SortArray(new int[] { 1, 3, 5, 1, 5, -1, 24, 12 })) {
Console.WriteLine(item); // -1 1 1 3 5 5 12 24
}
数组冒泡排序
public static int[] SortArray(int[] array)
{
for(int i = 0; i < array.Length - 1; i++)
{
for (int j = 0; i + j < array.Length - 1; j++)
{
if (array[j] > array[j + 1]) {
int num = array[j];
array[j] = array[j + 1];
array[j + 1] = num;
}
}
}
return array;
}
foreach (int item in SortArray(new int[] { 1, 3, 5, 1, 5, -1, 24, 12 })) {
Console.WriteLine(item); // -1 1 1 3 5 5 12 24
}