// C#
public bool BigONotation(int[] data)
{
return (data[0] == 0) ? true : false;
}
// C#
public void BigONotation(int[] data)
{
for (int i = 0; i < data.Length; i++) // 데이터의 개수 만큼
{
Console.WriteLine(i);
}
}
// C#
public void BigONotation(int[] data)
{
for (int i = 0; i < data.Length; i++) // data의 개수만큼
{
for (int j = 0; j < data.Length; j++) // data의 개수만큼
{
Console.WriteLine(i + j);
}
}
}
// C#
public int Fibonacci(int value) // 피보나치 수열
{
if (value <= 2)
{
return 1;
}
return Fibonacci(value - 1) + Fibonacci(value - 2);
}
// C#
// 이진 탐색
public int BinarySearch(int key, int[] arr, int start, int end)
{
if (start > end)
{
return -1;
}
int mid = (start + end) / 2; // 중간값 찾음
if (arr[mid] == key)
{
return mid;
}
else if (arr[mid] > key)
{
return BinarySearch(key, arr, start, mid - 1); // end를 중간지점 -1로 지정
}
return BinarySearch(key, arr, mid + 1, end); // start를 중간지점 +1로 지정
}
// C#
// 퀵정렬
public void QuickSrot(int[] data, int start, int end)
{
if (start >= end) // 원소가 1개인 경우
{
return;
}
int key = start; // 키는 첫번째 원소
int i = start + 1;
int j = end;
int temp;
while (i <= j) // 엇갈릴 때까지 반복
{
while (data[i] <= data[key]) // 피봇 값보다 큰 값을 만날 때까지
{
i++;
}
while (data[j] >= data[key] && j > start) // 키 값보다 작은 값을 만날 때까지
{
j--;
}
if (i > j) // 현재 엇갈린 상태면 키 값과 교체
{
temp = data[j];
data[j] = data[key];
data[key] = temp;
}
else
{
temp = data[j];
data[j] = data[i];
data[i] = temp;
}
}
QuickSrot(data, start, j - 1); // end값을 -1
QuickSrot(data, j + 1, end); /// start값을 +1
}