zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#常见排序算法

2023-09-11 14:19:57 时间

 

目录

1.排序算法比较

2.冒泡排序

3.选择排序

4.插入排序

5.快速排序


1.排序算法比较

2.冒泡排序

 public delegate int DelCompare<T>(T t1,T t2);

 public static T[] BubbleSort<T>(T[] sortArr, DelCompare<T> delCompare)
 {
     for (int i = 0; i < sortArr.Length - 1; i++)
     {
        for (int j = 0; j < sortArr.Length - 1 - i; j++)
        {
            if(delCompare(sortArr[j],sortArr[j + 1]) > 0)
            {
                T temp = sortArr[j];
                sortArr[j] = sortArr[j + 1];
                sortArr[j + 1] = temp;
            }
         }
      }

      return sortArr;
 }

调用:int[] resultArr = BubbleSortClass.BubbleSort<int>(arr,(t1,t2 ) => t1 - t2);

3.选择排序

public delegate int DelCompare<T>(T t1, T t2);

public static T[] SelectSort<T>(T[] arr, DelCompare<T> delCompare)
{
    int min = 0;
    for (int i = 0; i < arr.Length - 1; i++)
    {
       min = i;
       for (int j = i + 1; j < arr.Length; j++)
       {
           if (delCompare(arr[min], arr[j]) > 0)
              min = j;
       }

       T temp = arr[i];
       arr[i] = arr[min];
       arr[min] = temp;
    }
    return arr;
 }

4.插入排序

 public static int[] InsertionSort(int[] arr)
 {
     for (int i = 1; i < arr.Length; i++)
     {
         for (int j = i; j > 0; j--)
         {
             if(arr[j] < arr[j - 1])
             {
                 int temp = arr[j];
                 arr[j] = arr[j - 1];
                 arr[j - 1] = temp;
             }
         }
     }
     return arr;
}

5.快速排序

public static int[] QuickSort(int[] arr,int left,int right)
{
    if(left < right)
    {
       int point = arr[left];
       int i = left;
       int j = right;

       while(i < j)
       {
           while (arr[j] > point && i < j)
              j--;
           arr[i] = arr[j];

           while (arr[i] < point && i < j)
              i++;
           arr[j] = arr[i];
      }

      arr[i] = point;
      QuickSort(arr, left, i - 1);
      QuickSort(arr, i + 1, right);
   }
   return arr;
}