常见的排序算法

冒泡排序、选择排序、插入排序的时间复杂度为 O(n^2)。

冒泡排序

  static void BubbleSortAlgorithm(int[] array)
  {
      int n = array.Length;

      for (int i = 0; i < n - 1; i++)
      {
          for (int j = 0; j < n - i - 1; j++)
          {
              // 如果当前元素大于下一个元素,交换它们
              if (array[j] > array[j + 1])
              {
                  int temp = array[j];
                  array[j] = array[j + 1];
                  array[j + 1] = temp;
              }
          }
      }
  }

选择排序

  static void SelectionSortAlgorithm(int[] array)
  {
      int n = array.Length;

      for (int i = 0; i < n - 1; i++)
      {
          // 找到未排序部分的最小元素的索引
          int minIndex = i;
          for (int j = i + 1; j < n; j++)
          {
              if (array[j] < array[minIndex])
              {
                  minIndex = j;
              }
          }

          // 将找到的最小元素与未排序部分的第一个元素交换位置
          int temp = array[minIndex];
          array[minIndex] = array[i];
          array[i] = temp;
      }
  }

插入排序

  static void InsertionSortAlgorithm(int[] array)
  {
      int n = array.Length;

      for (int i = 1; i < n; i++)
      {
          int key = array[i];
          int j = i - 1;

          // 将比 key 大的元素向右移动
          while (j >= 0 && array[j] > key)
          {
              array[j + 1] = array[j];
              j--;
          }

          // 将 key 插入到正确的位置
          array[j + 1] = key;
      }
  }
posted @ 2023-10-09 22:14  二声  阅读(11)  评论(0)    收藏  举报