冒泡排序、插入排序、交换排序
2016-04-13 14:36
232 查看
本文介绍复杂度为O(N^2)的三种排序:冒泡、插入以及交换,还有插入排序的变种希尔排序;
冒泡排序:(时间复杂度固定,恒为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]); } }
相关文章推荐
- C语言中随机数的生成,以及简单猜数游戏的实现。
- java中字符串的的替换replace和replaceAll的区别
- JPA综述
- Android中WebView与JS交互
- 正则 密码 由数字和字母组成, 并且不能为纯字母或纯数字
- MyEclipse每次保存时提示MyEclipseErrors running builder 'DeploymentBuilder' on project..的解决方法
- 动作传感器-摇一摇的Demo
- 【Linux】ifconfig命令详解
- xml一些名词的意义
- jQuery学习之二 jQuery选择器
- leetcode-11-Container With Most Water
- 数学规划基础(北航)答案链接
- Invalid layout of java.lang.String at value
- Github+Jekyll —— 创建个人免费博客(一)从零开始
- D-Bus介绍
- linux环境下编译hadoop-2.6.0源码
- Android RadioButton selector背景
- POJ 1064 Cable master
- SSRS使用MySql作为数据源遇到的问题。
- android 电容屏(一):电容屏基本原理篇