插入排序和希尔排序
来源:互联网 发布:淘宝部分退款在哪 编辑:程序博客网 时间:2024/05/20 06:55
插入排序是从将待排列的数组分成两列,待排列的无序区和排列好的有序区;
思想就是每次从无序区取出第一个数据插入到有序区的正确位置。
时间复杂度是n~n^2,平均是n^2,档大部分数据有序的时候,插入排序的速度会大大提升。
是稳定的排序算法。
void incert_sort(vector<int> input, int n)
{
for (int i = 1; i < n; i++)
{
int tmp = input[i];
int j = i-1;
while (j>=0 && input[j] < tmp)
{
input[j + 1] = input[j];
j--;
}
input[j + 1] = tmp;
}
}
希尔排序是插入排序的变种,通过改变步长,不断的实行步长下的简单插入排序。因为存在不相邻的元素交换,所以可能是不稳定的。
平均时间复杂度是nlogn,最坏是nlogn,因为与步长的选取有关,所以没有最优。
void shell_sort(vector<int> input, int n)
{
int d = n / 2;
while (d>0)
{
for (int i = d; i < n; i++)
{
int j = i - d;
int tmp = input[i];
while (j >= 0 && input[j]>tmp)
{
input[j + d] = input[j];
j = j - d;
}
input[j + d] = tmp;
}
}
}
0 0
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 希尔排序和插入排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- oracle创建表空间【整理】
- [BCG]使属性页表单实现最大化最小化按钮1
- 实现会员注册升级
- maven学习(1)
- 底部带图标的导航选项卡的两种实现方式
- 插入排序和希尔排序
- mysql in 子查询 效率慢 优化(转)
- Intent 详解
- 浏览器兼容
- 计算合式公式(wff) 【让你的离散作业变的更轻松】
- nginx、TP框架实现兼容pathinfo和rewrite两种url访问方式
- Android图片轮播控件 如果对你有帮助请star哦!
- Android之蓝牙 详细使用操作步骤
- iOS 应用内跳转到百度地图、苹果地图、谷歌地图、高德地图等