C++实现排序算法
来源:互联网 发布:知行天下 百度影音 编辑:程序博客网 时间:2024/06/05 04:44
c++实现六大经典排序算法
数据结构中有六大经典的排序算法,分别是冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序,以下是用c++实现的六大经典算法的代码:
**1.冒泡排序:**#include <iostream>#include <cmath>#include <string>using namespace std;//一次冒泡排序void bubble(int arr[],int size) { for (int i = 1; i < size - 1; i++) { if (arr[i - 1] > arr[i]) { swap(arr[i - 1], arr[i]); } }}//多次冒泡排序void bubbleSort(int arr[], int size) { for (int i = 0; i < size - 1; i++) { bubble(arr, size); }}//测试部分void main() { int arr[] = { 3,2,1,4,5 }; bubbleSort(arr, 5); for (auto c : arr) { cout << c<<" "; } cout << endl;}**2.选择排序:**#include <iostream>#include <cmath>#include <string>#include <algorithm>using namespace std;//此函数用于找到一次循环的最大值void select(int arr[], int size) { int max = arr[0]; int pos = 0; for (int i = 0; i < size; i++) { if (arr[i] > max) { max = arr[i]; pos = i; } } swap(arr[pos], arr[size - 1]);}//此函数用于剩余size-1个数进行求最大数并把最大数放在第size-1个位置void selectSort(int arr[], int size) { for (int i = size; i >= 1; i--) { select(arr, i); }}void main() { int arr[] = { 3,2,5,4,1 }; selectSort(arr, 5); for (auto c : arr) { cout << c << " "; } cout << endl;}**3.插入排序:**#include <iostream>#include <cmath>#include<algorithm>using namespace std;void insert(int arr[], int i) { int key = arr[i]; while (key < arr[i - 1]) { arr[i] = arr[i - 1]; i--; if (i == 0) { break; } } arr[i] = key; }void insertSort(int arr[], int len) { for (int i = 1; i < len; i++) { insert(arr, i); }}void main() { int arr[] = { 2,1,9,45,6,1,7,0,12,89 }; insertSort(arr, 10); for (auto c : arr) { cout << c << " "; }}**4.归并排序**#include <iostream>#include <cmath>#include <string>using namespace std;void merge(int arr[], int L, int M, int R) { int Left[4]; int Right[4]; for (int i = L; i < M - L; i++) { Left[i - L] = arr[i]; } for (int i = M; i <= R; i++) { Right[i-M] = arr[i]; } int i = 0, j = 0, k = 0; while (i < 4 && j < 4) { if (Left[i] < Right[j]) { arr[k] = Left[i]; k++; i++; } else{ arr[k] = Right[j]; k++; j++; } } while (i < 4) { arr[k] = Left[i]; k++; i++; } while (j < 4) { arr[k] = Right[j]; k++; j++; }}void main() { int arr[] = { 2,4,6,8,3,5,7,9 }; merge(arr, 0, 4, 7); for (auto c : arr) { cout << c << " "; } cout << endl;}**5.快速排序**#include <iostream>#include <cmath>#include <string>#include <algorithm>using namespace std;void quick(int arr[], int L,int R) { int pivot = arr[(L + R) / 2]; int i = L; int j = R; while (i <= j) { while (arr[i] < pivot) { i++; } while (arr[j] > pivot) { j--; } if (i <= j) { swap(arr[i], arr[j]); i++; j--; } } if (L < j) { quick(arr, L, j); } if (i < R) { quick(arr, i, R); }}void main() { int arr[] = { 9,8,6,4,5 }; quick(arr, 0, 4); for(auto c:arr) { cout << c << " "; } cout << endl;}**6.堆排序**#include <iostream>#include <cmath>#include<algorithm>using namespace std;//父节点大于左右子节点void heap(int arr[], int index, int len) { int max = index; int left = 2 * index + 1; int right = 2 * index + 2; if (left < len && arr[max] < arr[left]) { max = left; } if (right <len && arr[max] < arr[right]) { max = right; } if (index != max) { swap(arr[index], arr[max]); } }//从最后一个节点开始建大顶堆,从下往上建堆void heapList(int arr[], int len) { for (int i = len - 1; i >= 0; i--) { heap(arr, i, len); }}//将根节点与最后一个节点进行交换void heapSort(int arr[], int len) { for (int i = len - 1; i >= 0; i--) { heapList(arr, i+1); swap(arr[0], arr[i]); }}void main() { int arr[] = { 2,1,9,45,6,3,7,0,12,89 }; heapSort(arr, 10); for (auto c : arr) { cout << c << " "; }}
阅读全文
0 0
- 排序算法c实现
- 排序算法 (C实现)
- 排序算法实现(C/C++)
- 排序算法(C语言实现)
- 快速排序算法(c#)实现
- 经典排序算法-C实现
- 经典排序算法-C实现
- 经典排序算法-C实现
- 经典排序算法c实现
- 排序算法实现 C/C++
- Objective-C排序算法实现
- C语言排序算法实现
- Objective-C排序算法实现
- 八大排序算法C实现
- 排序算法--C语言实现
- 排序算法(C实现)------ 冒泡排序
- 排序算法(c实现)------- 插入排序
- 排序算法(C实现)------- 希尔排序
- docker pull 过程distribution源码 分析
- 带你逐步深入了解SSM框架——SpringMVC框架详解
- GLSL加速类图解
- Git免密码登录
- IndentationError: unexpected indent,SyntaxError: invalid syntax,TypeError: object() takes no paramet
- C++实现排序算法
- WPF textbox 占位符 不顶边框输出
- Nand Flash管理算法介绍之垃圾回收类型介绍
- 监听器(五)
- 【逆向学习】 拯救地球 writeup
- MySQL| MySQL联接(INNER JOIN,LEFT JOIN,RIGHT JOIN)
- 跳转网页
- 深度工具安装(NVIDIA+cuda+cudnn+tensorflow)
- 命名规则及数据类型小结