21xrx.com
2024-05-20 12:12:08 Monday
登录
文章检索 我的文章 写文章
C++ 排序算法代码
2023-07-01 15:27:36 深夜i     --     --
C++ 排序算法 代码 快速排序 归并排序

C++是一种广泛使用的高级编程语言,它拥有强大的编程能力,其中排序算法是编程中最常用的算法之一。在C++中,有许多种方法可以实现排序算法,下面介绍几种排序算法的代码实现。

1. 冒泡排序

冒泡排序是最简单的排序算法之一,它通过不断地比较相邻的元素,来完成排序。冒泡排序的代码实现如下:


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[j] > arr[j+1]) {

        temp = arr[j];

        arr[j] = arr[j+1];

        arr[j+1] = temp;

      }

    }

  }

}

2. 快速排序

快速排序是一种基于分治思想的排序算法,它的核心是选取一个基准元素,将小于这个元素的放在左边,大于这个元素的放在右边。快速排序的代码实现如下:


int partition(int arr[], int low, int high) {

  int pivot = arr[high];

  int i = low - 1;

  for (int j = low; j <= high-1; j++) {

    if (arr[j] < pivot) {

      i++;

      swap(arr[i], arr[j]);

    }

  }

  swap(arr[i+1], arr[high]);

  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);

  }

}

3. 归并排序

归并排序是一种稳定的排序算法,其思想是将待排序的序列不断拆分成两个子序列,直至子序列长度为1,再将两个子序列合并成一个有序序列。归并排序的代码实现如下:


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[n1], R[n2];

  for (i = 0; i < n1; i++) {

    L[i] = arr[l+i];

  }

  for (j = 0; j < n2; j++) {

    R[j] = arr[m+1+j];

  }

  i = 0;

  j = 0;

  k = l;

  while (i < n1 && j < n2) {

    if (L[i] <= R[j]) {

      arr[k] = L[i];

      i++;

    } else {

      arr[k] = R[j];

      j++;

    }

    k++;

  }

  while (i < n1) {

    arr[k] = L[i];

    i++;

    k++;

  }

  while (j < n2) {

    arr[k] = R[j];

    j++;

    k++;

  }

}

void mergeSort(int arr[], int l, int r) {

  if (l < r) {

    int m = l + (r-l) / 2;

    mergeSort(arr, l, m);

    mergeSort(arr, m+1, r);

    merge(arr, l, m, r);

  }

}

以上便是C++中几种常用的排序算法,在实际开发中可以根据具体需求选取相应的算法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复