常见排序算法——选择排序、冒泡排序、插入排序和原地排序
来源:互联网 发布:淘宝如何解除合并付款 编辑:程序博客网 时间:2024/06/04 01:31
几个常见的排序算法
#include<iostream>#include<algorithm>#include<iterator>using namespace std;//选择排序template<typename T>void SelectionSort(T a[], int n){ for(int size = n; size > 1; --size) { int indexOfMax = 0; for(int i = 1; i < size; ++i) if(a[indexOfMax] < a[i]) indexOfMax = i; swap(a[indexOfMax], a[size - 1]); }}//冒泡排序template<typename T>void BubbleSort(T a[], int n){ for(int size = n; size > 1; --size) { for(int i = 0; i < size - 1; ++i) { if(a[i] > a[i + 1]) swap(a[i], a[i + 1]); } }}//插入排序template <typename T>void insertionSort(T a[], int n){ for (int i = 1; i < n; ++i) { T t = a[i]; int j; for (j = i - 1; j >= 0 && t < a[j]; --j) a[j + 1] = a[j]; a[j + 1] = t; }}//按名次原地重排template <typename T>void RearrangeSort(T a[], int n, int r[]){ for (int i = 1; i < n; ++i) for (int j = 0; j < i; ++j) { if (a[i] > a[j]) ++r[i]; else ++r[j]; } for (int i = 0; i < n; ++i) { while (i != r[i]) { int t = r[i]; swap(a[i], a[t]); swap(r[i], r[t]); } }}int main(){ int a[7] = { 3,2,6,5,9,4,8 }; int b[7] = { 7,1,4,6,8,3,9 }; int r[7]; for (int i = 0; i < 7; ++i) //初始化r[7],用于rank数组r r[i] = 0; copy(a, a + 7, ostream_iterator<int>(cout, " ")); cout << endl; SelectionSort(a, 7);//or BubbleSort(a, 7)/insertionSort(a, 7) copy(a, a + 7, ostream_iterator<int>(cout, " ")); cout << endl; copy(b, b + 7, ostream_iterator<int>(cout, " ")); cout << endl; RearrangeSort(b, 7, r); copy(b, b + 7, ostream_iterator<int>(cout, " ")); cout << endl; return 0;}
0 0
- 常见排序算法——选择排序、冒泡排序、插入排序和原地排序
- 排序算法1—插入排序、选择排序、冒泡排序
- 黑马程序员——java基础排序算法:选择排序、冒泡排序和插入排序
- C++各种常见排序算法 冒泡排序,插入排序,快排序,选择排序,希尔排序
- 【算法】插入排序/冒泡排序/选择排序
- 《算法》选择排序、插入排序、冒泡排序
- 黑马程序员_常见排序算法:冒泡排序、选择排序和插入排序
- 常见排序方法(冒泡排序、选择排序、插入排序、希尔排序和快速排序)
- 冒泡排序 选择排序和插入排序
- 冒泡排序、插入排序和选择排序
- 冒泡排序和插入排序,选择排序
- 基础排序算法(冒泡排序、选择排序、插入排序)
- 排序算法一(冒泡排序、选择排序、插入排序)
- 排序算法(冒泡排序、选择排序、插入排序)
- 简单排序算法:冒泡排序,选择排序,插入排序
- 基本排序算法(冒泡排序,选择排序,插入排序)
- 简单排序算法(冒泡排序、选择排序、插入排序)
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- Mysql的查看数据库和数据库中表格
- 设计模式之模式分类
- 算法导论 练习题 4.3-8
- 绕脑的汉诺塔递归
- C++复习——类(class)的实现与定义
- 常见排序算法——选择排序、冒泡排序、插入排序和原地排序
- 性能测试平台效率优化的一次经验(python版)
- 判断各种排序算法的稳定性
- 比较好的一些问题解决方案合集(待补充)。
- android 的四种启动模式
- TensorFlow实现ResNet(ResNet 152网络结构的forward耗时检测)
- 常见加密算法分类
- 人脸对齐 python代码
- Ubantu 常用命令