冒泡排序、插入排序、交换排序
来源:互联网 发布:地政 大数据 编辑:程序博客网 时间:2024/06/06 09:28
本文介绍复杂度为O(N^2)的三种排序:冒泡、插入以及交换,还有插入排序的变种希尔排序;
冒泡排序:(时间复杂度固定,恒为O(N^2)
void BubbleSort(int a[], int n){ for (int i = 0; i < n-1; i++) for (int j = 0; j < n-i-1; j++) if (a[i] > a[i+1]) swap(a[i], a[i+1]);}带flag标志的改进冒泡排序:
void BubbleSort2(int a[], int n){ for (int i = 0; i < n-1; i++) { bool flag = false; for (int j = 0; j < n-i-1; j++) { if (a[j] > a[j+1]) { swap(a[i], a[j+1]); flag = true; } } if (!flag) break; }}
插入排序:
void InsertSort(int a[], int n){ for (int i = 1; i < n; i++) { int key = a[i]; int j = i-1; while (j >= 0 && a[j] > a[i]) j--; for (int k = j+1; k < i; k++) a[k+1] = a[k]; a[j+1] = key; }}
插入排序的变种--希尔排序:
。。。
选择排序:不稳定排序
void SelectionSort(int a[], int n){ for (int i = 0; i < n-1; i++) { int index = i; for (int j = i+1; j < n; j++) { if (a[index] > a[j]) index = j; } if (i != index) swap(a[i], a[index]); }}
0 0
- 冒泡排序、插入排序、交换排序
- 选择排序,冒泡排序,插入排序,交换排序,shell排序
- 排序:插入排序/选择排序/交换排序(冒泡法)
- 交换排序:冒泡排序
- 交换排序-冒泡排序
- 交换排序-冒泡排序
- 交换排序-冒泡排序
- 冒泡排序-交换排序
- 【交换排序】冒泡排序
- 交换排序-冒泡排序
- 交换排序-冒泡排序
- 交换排序------冒泡排序
- 交换排序-冒泡排序
- **交换排序----冒泡排序**
- 交换排序-冒泡排序
- 交换排序--冒泡排序
- 交换排序、插入排序
- 冒泡排序、交换排序、选择排序、插入排序、快速排序、SHELL排序
- Android 柱形WaveView
- C#默认以管理员身份运行程序
- POJ 2299(树状数组,离散化)
- 抽象基类
- 剑指offer系列之56:二叉树的下一个节点
- 冒泡排序、插入排序、交换排序
- 哈希表(等概率情况下)查找成功与查找不成功的平均查找长度
- 双指针---Remove Element
- 提升物理机利用率-Mysql多实例的配置
- AndroidStudio断点调试
- 基于PHP的车辆违章查询api调用代码示例
- 问题解决:mysql 5.7安装包没有data文件夹启动mysql
- Android LinearLayout addView方法和getChildAt方法使用范例
- 监听键盘的删除按钮