折半插入查找
2016-05-14 13:34
316 查看
先利用二分查找找到a[[i]在1~i中插入的位置,再移位,插入。
空间复杂度O(1),时间复杂度O(n^2),该算法比插入算法好些,这是稳定的排序方法。
空间复杂度O(1),时间复杂度O(n^2),该算法比插入算法好些,这是稳定的排序方法。
//折半插入排序 #include<iostream> #include<cstdio> using namespace std; #define MAX 100 void BinartInsertSort(int a[MAX],int n) { int low,high,mid; for(int i=2;i<=n;i++) { low=1; high=i-1; a[0]=a[i]; while(low<=high) { mid=(low+high)/2; if(a[mid]>a[0]) high=mid-1; else low=mid+1; } for(int j=i-1;j>=high+1;j--) a[j+1]=a[j]; a[high+1]=a[0]; } } int main() { int a[MAX]; int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); BinartInsertSort(a,n); for(int i=1;i<=n;i++) printf("%d ",a[i]); printf("\n"); return 0; }
相关文章推荐
- commons-lang3
- C++实现“简单计算器”
- app沙盒与文件操作(16.5.14)
- DEDECMS织梦修改标题限制长度的方法
- Android 如何让EditText不可编辑
- (Ubuntu+Centos) ntp时间同步服务器搭建与使用
- 后台对象转为json字符串
- Android Https请求详细demo
- 理解JavaScript中闭包的使用
- Reading Note
- ubuntu创建新用户并增加管理员权限
- 学习进度表_十一周
- Android--第一行代码笔记(1)
- 【线段树】【括号序列】【ZJOI2007】捉迷藏 Hide
- linux shell编程学习--日志工具
- 《java入门第一季》之Math类一个小案例获取任意数值范围内随机数
- 《java入门第一季》之Math类一个小案例获取任意数值范围内随机数
- 基于mob短信验证的账号注册demo
- 线性表的链接存储——单链表
- leetcode 之Median of Two Sorted Arrays(五)