21xrx.com
2024-12-22 23:16:06 Sunday
登录
文章检索 我的文章 写文章
C++实现各种排序算法
2023-06-22 20:19:38 深夜i     --     --
C++ 排序算法 实现

C++作为一种流行的编程语言,在排序算法方面也有很多优秀的实现。下面介绍几种常用的排序算法的C++实现代码。

一、冒泡排序

冒泡排序是一种简单并且容易理解的排序算法。它以轮询的方式遍历整个数组,并将每相邻的两个元素进行比较和交换,从而将较小的元素向左移动。具体实现代码如下:

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

  for(int i=0; i

    for(int j=0; j

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

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

      }

    }

  }

}

二、插入排序

插入排序的基本思想是将未排序的元素一个一个地插入到已排序的元素中。具体实现代码如下:

void insertion_sort(int arr[], int n){

  for(int i=1; i

    int j=i;

    while(j>0 && arr[j]

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

      j--;

    }

  }

}

三、选择排序

选择排序的基本思想是每次选择未排序数组中最小的元素,并将该元素交换到未排序数组的开头。具体实现代码如下:

void selection_sort(int arr[], int n){

  for(int i=0; i

    int min_idx = i;

    for(int j=i+1; j

      if(arr[j]

        min_idx = j;

      }

    }

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

  }

}

四、快速排序

快速排序是一种递归地分治式排序方法。该算法的基本思想是选择一个元素作为枢轴,将数组分成两部分,其中第一部分所有元素都比枢轴小,而第二部分所有元素都比枢轴大。之后递归地对这两部分进行排序。具体实现代码如下:

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

  int pivot = arr[high];

  int i = low-1;

  for(int j=low; j

    if(arr[j]

      i++;

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

    }

  }

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

  return i+1;

}

void quick_sort(int arr[], int low, int high){

  if(low

    int pivot = partition(arr, low, high);

    quick_sort(arr, low, pivot-1);

    quick_sort(arr, pivot+1, high);

  }

}

以上是几种基本的排序算法的C++实现方法。对于每一种算法,它们都有自己的优势和适用场景。需要根据具体情况选择合适的排序算法。

  
  

评论区

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