21xrx.com
2024-12-22 20:37:29 Sunday
登录
文章检索 我的文章 写文章
C++字符串排序代码
2023-07-09 18:38:55 深夜i     --     --
C++ 字符串 排序 代码

C++字符串排序是一个比较基础但也很重要的算法,主要用于对一组字符串进行排序,以便更方便地处理这些数据。下面我们将介绍一些基础的C++字符串排序代码。

一、冒泡排序

冒泡排序是一种常见的排序方法,其思路是将相邻的元素两两比较,将较大的元素交换到右侧。下面是C++实现代码:


void bubble_sort(string arr[], int n) {

  for (int i = 0; i < n; i++) {

    for (int j = 0; j < n-i-1; j++) {

      if (arr[j] > arr[j+1]) {

        swap(arr[j], arr[j+1]);

      }

    }

  }

}

二、快速排序

快速排序是一种常见而高效的排序方法,其思路是将一个数组按照某个规则分成两个子数组,之后递归地对这两个子数组进行排序。下面是C++实现代码:


void quick_sort(string arr[], int left, int right) {

  if (left >= right)

    return;

  

  int pivot = left;

  string pivotValue = arr[left];

  for (int i = left+1; i <= right; i++) {

    if (arr[i] < pivotValue) {

      pivot++;

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

    }

  }

  swap(arr[left], arr[pivot]);

  quick_sort(arr, left, pivot-1);

  quick_sort(arr, pivot+1, right);

}

三、归并排序

归并排序是一种稳定的排序算法,其思路是将一个数组拆分成两个子数组,之后递归地对这两个子数组进行排序,最后将这两个子数组合并。下面是C++实现代码:


void merge_sort(string arr[], int left, int right) {

  if (left >= right)

    return;

  

  int mid = left + (right-left)/2;

  merge_sort(arr, left, mid);

  merge_sort(arr, mid+1, right);

  string temp[right-left+1];

  int i = left, j = mid+1, k = 0;

  while (i <= mid && j <= right) {

    if (arr[i] < arr[j]) {

      temp[k++] = arr[i++];

    } else {

      temp[k++] = arr[j++];

    }

  }

  while (i <= mid) {

    temp[k++] = arr[i++];

  }

  while (j <= right) {

    temp[k++] = arr[j++];

  }

  for (int i = left, j = 0; i <= right; i++, j++) {

    arr[i] = temp[j];

  }

}

以上是C++字符串排序的三种常见算法。无论哪种排序算法,都需要根据实际情况选择合适的方法。因此,我们需要根据数据的规模、性质、时间效率要求等因素综合考虑,选择最合适的C++字符串排序算法。

  
  

评论区

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