mmbs 发表于 2024-4-24 18:00

c语言几大基本算法

// 冒泡排序
void bubbleSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i < n - 1; i++)
      for (j = 0; j < n - i - 1; j++)
            if (arr > arr) {
                temp = arr;
                arr = arr;
                arr = temp;
            }
}

// 选择排序
void selectionSort(int arr[], int n) {
    int i, j, min_idx;
    for (i = 0; i < n - 1; i++) {
      min_idx = i;
      for (j = i + 1; j < n; j++)
            if (arr < arr)
                min_idx = j;
      swap(&arr, &arr);
    }
}

// 插入排序
void insertionSort(int arr[], int n) {
    int i, j, key;
    for (i = 1; i < n; i++) {
      key = arr;
      j = i - 1;
      while (j >= 0 && arr > key) {
            arr = arr;
            j = j - 1;
      }
      arr = key;
    }
}

// 快速排序
int partition (int arr[], int low, int high) {
    int pivot = arr;
    int i = (low - 1);
    for (j = low; j <= high - 1; j++) {
      if (arr < pivot) {
            i++;
            swap(&arr, &arr);
      }
    }
    swap(&arr, &arr);
    return (i + 1);
}

void quickSort(int arr[], int low, int high) {
    if (low < high) {
      int pi = partition(arr, low, high);
      quickSort(arr, low, pi - 1);
      quickSort(arr, pi + 1, high);
    }
}

// 归并排序
void merge(int arr[], int l, int m, int r) {
    int i, j, k;
    int n1 = m - l + 1;
    int n2 = r - m;
    int L, R;
    for (i = 0; i < n1; i++)
      L = arr;
    for (j = 0; j < n2; j++)
      R = arr;
    i = 0;
    j = 0;
    k = l;
    while (i < n1 && j < n2) {
      if (L <= R) {
            arr = L;
            i++;
      }
      else {
            arr = R;
            j++;
      }
      k++;
    }
    while (i < n1) {
      arr = L;
      i++;
      k++;
    }
    while (j < n2) {
      arr = R;
      j++;
      k++;
    }
}

void mergeSort(int arr[], int l, int r) {
    if (l < r) {
      int m = l + (r - l) / 2;
      mergeSort(arr, l, m);

lidi911 发表于 2024-4-24 23:50

这不就是C语言10大常用算法之一吗
页: [1]
查看完整版本: c语言几大基本算法