거품 정렬 C# 구현, 의뢰 사용, 3가지 방식 포함:Fun<>, 익명 방법, Lambda 표현식
4510 단어 lambda
예:
public class People
{
public string Name { get; set; }
public int Age { get; set; }
public People(string name, int age)
{
Name = name;
Age = age;
}
public static bool CompareAge(People p1, People p2)
{
return p1.Age < p2.Age;
}
public override string ToString()
{
return string.Format("[people] name:{0},age:{1}", Name, Age);
}
}
Student:
public class Student
{
public string Name { get; set; }
public float Score { get; set; }
public Student(string name, float score)
{
Name = name;
Score = score;
}
public static bool CompareScore(Student s1, Student s2)
{
return s1.Score < s2.Score;
}
public override string ToString()
{
return string.Format("[student] name:{0},score:{1}",Name,Score);
}
}
거품 정렬의 실현은 Fun<>의 의뢰 작성법을 모르면 마지막으로 설명합니다.
public static class Storter_Fun
{
public static void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparision)
{
bool swapped = true;
do
{
swapped = false;
for (int i = 0; i < sortArray.Count - 1; i++)
{
if (comparision(sortArray[i + 1], sortArray[i]))
{
T temp = sortArray[i];
sortArray[i] = sortArray[i + 1];
sortArray[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
}
}
콘솔, 정렬 사용:
static void Main(string[] args)
{
//
People[] peoples = {new People(" ",43),
new People(" ",12),
new People(" ",50),
new People(" ",21),
new People(" ",33),};
//Fun<>
BubbleSorter.Storter_Fun.Sort<People>(peoples, People.CompareAge);
//
BubbleSorter.Storter_Fun.Sort<People>(peoples, delegate(People p1, People p2)
{
return p1.Age < p2.Age;
});
//Lambdah
BubbleSorter.Storter_Fun.Sort<People>(peoples, (People p1, People p2) =>
{
return p1.Age < p2.Age;
});
foreach (var people in peoples)
{
Console.WriteLine(people);
}
//
Student[] students = {new Student(" ",80.5F),
new Student(" ",85),
new Student(" ",88),
new Student(" ",70),
new Student(" ",95),};
BubbleSorter.Storter_Fun.Sort<Student>(students, Student.CompareScore);
foreach (var student in students)
{
Console.WriteLine(student);
}
Console.ReadKey();
}
의뢰: 호출 방법의 매개 변수는 일반적으로 수치형입니다. 예를 들어 int,string,DataTable 등입니다. 방법 자체를 매개 변수로 다른 방법에 전달할 수 있습니까?의뢰는 이 문제를 해결하는 것이다.매개 변수라면 유형이 있어야 한다.C#는 강한 유형이고 방법의 매개 변수는 int 유형이므로string 유형을 전송할 수 없습니다. 그렇지 않으면 편집 단계에서 잘못 보고합니다.int,string 등은 기존 형식입니다. 의뢰한 형식은 사용자 정의가 필요합니다.예:
대표 방법은 두 개의 범용 매개 변수를 입력하여 bool로 되돌아오는 것이다.
대표적인 방법은 int,string,DataTable, Array로 되돌아오는 세 가지 인자를 전송하는 것이다.
마지막 매개 변수가 되돌아오는 값 형식이다.
그러면 되돌아오는 값이 없으면?
대표 방법은 두 개의 범용 매개 변수를 입력했는데 값을 되돌려 주지 않았다
대표 방법은 두 개의 인자를 전송하는 것입니다: int,string, 되돌아오는 값이 없습니다
의뢰의 유형을 정의했습니다. 들어오는 방법은 이 정의에 부합되어야 합니다. 즉, 들어오는 매개 변수, 유형, 개수, 순서, 되돌아오는 값이 일치해야 합니다. 그렇지 않으면 컴파일할 수 없습니다. C#가 강한 유형의 원인입니다.
방금 실현된 거품은 서로 다른 대상의 정렬을 지원할 수 있는데 주로 거품을 크기를 비교하는 방법으로 전달(위탁)하고 데이터를 교환하는 임시 변수와 범용 실현을 사용한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Lambda Cron 예제(Terraform)이 기사에서는 EventBridge를 사용하여 일정에 따라 람다를 트리거하는 방법을 살펴보겠습니다. Terraform을 사용하여 이를 구현할 것입니다. 이 예제에서는 간단한 Golang Hello World 예제를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.