Fun<>, 익명 메서드, Lambda 표현식 거품 정렬 C#
8462 단어 lambda
대두문
나누다
거품 정렬 C# 구현, 의뢰 사용, 3가지 방식 포함:Fun<>, 익명 방법, Lambda 표현식
거품 정렬은 간단한 정렬 방법으로 소량의 숫자 정렬에 적합하며 대량의 숫자(10개 이상)에 대해 더욱 효율적인 정렬 방법도 있다.여기서 실현된 거품 정렬은 기능을 실현해야 한다. 숫자 정렬뿐만 아니라 임의의 대상에 대해서도 정렬해야 한다.
예:
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 등은 기존 형식입니다. 의뢰한 형식은 사용자 정의가 필요합니다.예:
방금 실현된 거품은 서로 다른 대상의 정렬을 지원할 수 있는데 주로 거품을 크기를 비교하는 방법으로 전달(위탁)하고 데이터를 교환하는 임시 변수와 범용 실현을 사용한다.
분류:
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에 따라 라이센스가 부여됩니다.