CShap 有序的数组是否存在固定点 源代码
时间: 2023-10-23 20:08:43 浏览: 85
以下是C#中判断有序数组是否存在固定点的源代码:
```
public static bool HasFixedPoint(int[] arr)
{
int n = arr.Length;
for (int i = 0; i < n; i++)
{
if (arr[i] == i)
return true;
if (arr[i] > i)
break;
}
return false;
}
```
注释:
- `arr`:输入的有序数组;
- `n`:数组的长度;
- `i`:循环变量,从0开始遍历数组;
- `arr[i]`:数组中的元素;
- `if (arr[i] == i)`:如果当前元素等于其下标,即找到固定点;
- `if (arr[i] > i)`:如果当前元素大于其下标,即后面的元素也大于其下标,因为数组已经有序,所以后面的元素不可能是固定点,直接跳出循环节约时间;
- `return false`:如果循环结束仍未找到固定点,则返回false。
相关问题
CShap 在数组中找到最大的元素 源代码
以下是C#代码,用于在数组中找到最大的元素:
```
public static int FindMax(int[] array)
{
int max = array[0];
for (int i = 1; i < array.Length; i++)
{
if (array[i] > max)
{
max = array[i];
}
}
return max;
}
```
该方法接受一个整数数组作为参数,并在其中找到最大的元素。它使用一个for循环来遍历数组,比较每个元素和当前的最大值,如果元素比当前的最大值大,则将其赋值给max变量。最后,该方法返回最大值。
示例用法:
```
int[] numbers = { 10, 5, 20, 15, 30 };
int maxNumber = FindMax(numbers);
Console.WriteLine("The maximum number is: " + maxNumber);
```
输出:
```
The maximum number is: 30
```
CShap 数组的左右旋转 源代码
以下是C#中数组的左右旋转的源代码示例:
左旋转:
```csharp
public static void RotateLeft(int[] arr, int d)
{
int n = arr.Length;
Reverse(arr, 0, d - 1);
Reverse(arr, d, n - 1);
Reverse(arr, 0, n - 1);
}
public static void Reverse(int[] arr, int start, int end)
{
while (start < end)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
```
右旋转:
```csharp
public static void RotateRight(int[] arr, int d)
{
int n = arr.Length;
Reverse(arr, n - d, n - 1);
Reverse(arr, 0, n - d - 1);
Reverse(arr, 0, n - 1);
}
public static void Reverse(int[] arr, int start, int end)
{
while (start < end)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
```
阅读全文