C++中的十大排序问题
时间: 2024-05-23 22:13:14 浏览: 55
下面是C++中的十大排序问题:
1. 冒泡排序(Bubble Sort)
2. 选择排序(Selection Sort)
3. 插入排序(Insertion Sort)
4. 希尔排序(Shell Sort)
5. 归并排序(Merge Sort)
6. 快速排序(Quick Sort)
7. 堆排序(Heap Sort)
8. 计数排序(Counting Sort)
9. 桶排序(Bucket Sort)
10. 基数排序(Radix Sort)
以上排序算法都是常用的排序算法,具有不同的特点和适用场景。在编写排序算法时,需要根据具体问题的特点选择最合适的排序算法。
相关问题
快速排序c++十大排序
快速排序是十大排序算法之一,以下是C++实现快速排序的代码示例:
```c++
#include <iostream>
using namespace std;
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
/* partition */
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
int main() {
int arr[] = { 5, 2, 8, 4, 7, 1, 3, 9, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}
```
快速排序的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后再按此方法对这两部分记录分别进行快速排序,整个排序过程可以递归进行,以此达到整个序列有序的目的。
十大排序算法的实现c++
对于十大排序算法中的堆排序、选择排序和冒泡排序算法的C语言实现,可以参考如下代码:
堆排序:
```c
void heapify(int *vec, int i, int len) {
int left = i * 2 + 1;
int right = i * 2 + 2;
int largest = i;
if (left < len && vec[left > vec[largest]) {
largest = left;
}
if (right < len && vec[right > vec[largest]) {
largest = right;
}
if (largest != i) {
int temp = vec[i];
vec[i = vec[largest];
vec[largest = temp;
heapify(vec, largest, len);
}
}
void heapSort(int *vec, int len) {
for (int i = len / 2 - 1; i >= 0; i--) {
heapify(vec, i, len);
}
for (int j = len - 1; j > 0; j--) {
int temp = vec = vec[j];
vec[j = temp;
heapify(vec, 0, j);
}
}
```
选择排序:
```c
void selectionSort(int *vec, int len) {
for (int i = 0; i < len - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < len; j++) {
if (vec[j < vec[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = vec[i]; vec[i = vec[minIndex];
vec[minIndex = temp;
}
}
}
```
冒泡排序:
```c
void bubbleSort(int *vec, int len) {
for (int i = 1; i < len; i++) {
for (int j = 0; j < len - i; j++) {
if (vec[j > vec[j + 1]) {
int temp = vec[j];
vec[j = vec[j + 1];
vec[j + 1 = temp;
}
}
}
}
```
这些代码分别实现了堆排序、选择排序和冒泡排序算法,可以通过传入一个整型数组和数组长度来对数组进行排序。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [用C++实现十大经典排序算法](https://blog.csdn.net/qq_34139994/article/details/128217009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.239^v12^insert_chatgpt"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文