二分排序法
来源:互联网 发布:天文搜星算法 编辑:程序博客网 时间:2024/06/03 23:43
二分插入排序实际上是对插入排序的优化。
(1)算法思想
根据插入排序的思想,在插入待排序列的第i个元素时,由于前面的序列已经有序,因此可以使用二分法寻找第i个元素的正确位置。
(2)伪代码:
BinInsertSort(int a[], int n)
{
int key, left, right, middle;
for (int i=1; i<n; i++)
{
key = a[i];
left = 0;
right = i-1;
while (left<=right)
{
middle = (left+right)/2;
if (a[middle]>key)
right = middle-1;
else
left = middle+1;
}
for(int j=i-1; j>=left; j--)
{
a[j+1] = a[j];
}
a[left] = key;
}
}
{
int key, left, right, middle;
for (int i=1; i<n; i++)
{
key = a[i];
left = 0;
right = i-1;
while (left<=right)
{
middle = (left+right)/2;
if (a[middle]>key)
right = middle-1;
else
left = middle+1;
}
for(int j=i-1; j>=left; j--)
{
a[j+1] = a[j];
}
a[left] = key;
}
}
(3)分析
1)稳定2)空间代价:Θ(1)3)时间代价:
0 0
- 二分排序法
- 二分排序法
- 排序法 二分查找法
- 折半排序法(二分插入排序法)
- 折半排序法(二分插入排序法)
- 冒泡排序、选择排序、二分查找法
- 选择排序 快速排序 二分查找法
- 二分排序
- 二分排序
- 二分排序
- 二分排序
- 二分排序
- 排序+二分
- 二分排序
- 二分排序
- 二分排序
- 排序之二分排序
- 二分排序法(折半插入法)
- Java实现导出Excel文件
- Java文件读写操作
- UVA 10036 Divisibility
- Android学习笔记:高效载入大量Bitmap
- ListView
- 二分排序法
- 关于 SQLNET break/reset to client等待事件
- LeetCode 101. Symmetric Tree
- SQL SERVER 局部变量
- JAVA设计模式(11):结构型-装饰模式(Decorator)
- android native 与h5 交互技巧
- 赋值运算符函数
- Python处理多个客户端连接---派生服务器
- 最小费用最大流模板